diff --git a/.eslintignore b/.eslintignore index d5664830ab..d3db394349 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,3 +7,11 @@ node_modules/ examples/**/node_modules/ # todo: encrypt a compatible version of this test/resources/auth.js +# ignore emitted js +**/*v*.js +!test/**/*.js +lib/*.js +dialog/v1.js +index.js +sdk.js +scripts/typedoc/ \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index 9908fefcb6..1c67c9035b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,6 @@ module.exports = { "env": { - "node": true, + "node": true }, "plugins": [ "node", @@ -13,7 +13,7 @@ module.exports = { "prettier", ], "rules": { - "prettier/prettier": ["error", {"singleQuote": true, "printWidth": 160}], + "prettier/prettier": ["error"], "prefer-const": "error", "prefer-rest-params": "off", // https://github.com/mysticatea/eslint-plugin-node/issues/63 // The rest of these override rules that are enabled by one of the configs we extend but not compatible with current codebase diff --git a/.gitattributes b/.gitattributes index 3057058f70..77163f6c59 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,4 @@ # (On Windows, git is often configured to automatically convert between the two - See https://git-scm.com/docs/git-config#git-config-coreautocrlf ) *.js text eol=lf +*.ts text eol=lf diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..998bf7be45 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at dustinpopp@ibm.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 4651aaf624..6edb669658 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,17 +1,11 @@ # Questions -If you are having problems using the APIs or have a question about the IBM -Watson Services, please ask a question on -[dW Answers](https://developer.ibm.com/answers/questions/ask/?topics=watson) -or [Stack Overflow](http://stackoverflow.com/questions/ask?tags=ibm-watson). +If you have issues with the APIs or have a question about the Watson services, see [Stack Overflow](https://stackoverflow.com/questions/tagged/ibm-watson+node.js). # Code -* Our style guide is based on [Google's](https://google.github.io/styleguide/jsguide.html), most of it is automaticaly enforced (and can be automatically applied with `npm run autofix`) -* commits should start with the service name and end with the issue # - ``` - [concept-insights] Added functionality to list the graphs #135 - ``` +* Our style guide is based on [Google's](https://google.github.io/styleguide/jsguide.html), most of it is automaticaly enforced (and can be automatically applied with `npm run tslint:fix` or `npm run eslint:fix`) +* Commits should follow the [Angular commit message guidelines](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#-commit-message-guidelines). This is because our release tool uses this format for determining release versions and generating changelogs. To make this easier, we recommend using the [Commitizen CLI](https://github.com/commitizen/cz-cli) with the `cz-conventional-changelog` adapter. # Issues @@ -25,12 +19,16 @@ already encountered this issue. If you want to contribute to the repository, follow these steps: 1. Fork the repo. -2. Develop and test your code changes: `npm install -d && npm test`. +2. Install dependencies: `npm install` +3. Build the code: `npm run build` +4. Verify the build before beginning your changes: `npm run test-unit` +2. Develop and test your code changes. 3. Travis-CI will run the tests for all services once your changes are merged. 4. Add a test for your changes. Only refactoring and documentation changes require no new tests. 5. Make the test pass. -6. Commit your changes. +6. Commit your changes. Remember the follow the correct commit message guidelines. 7. Push to your fork and submit a pull request. +8. Be sure to sign the CLA. # Developer's Certificate of Origin 1.1 @@ -60,18 +58,15 @@ By making a contribution to this project, I certify that: ## Tests -Ideally, we'd like to see both unit and innervation tests on each method. -(Unit tests do not actually connect to the Watson service, integration tests do.) +Out of the box, `npm test` runs linting, unit tests, and integration tests (which require credentials). To run only the unit tests (sufficient for most cases), use `npm run test-unit`. -Out of the box, `npm test` runs linting and unit tests, but skips the integration tests, -because they require credentials. - -To run integration tests, copy `test/resources/auth.example.js` to `test/resources/auth.js` and fill in credentials for -the service(s) you wish to test. +To run integration tests, copy `test/resources/auth.example.js` to `test/resources/auth.js` and fill in credentials for the service(s) you wish to test. Currently this enables integration tests for all services so, unless all credentials are supplied, some tests will fail. (This will be improved eventually.) -To run only specific tests, pass the file name to mocha. For example: +To run only specific tests, pass the file name to `jest`. For example: -node ./node_modules/mocha/bin/_mocha test/integration/test.conversation.js +`npm i -g jest` +`jest test/integration/personality_insights.v3.test.js` +See [this page](https://jestjs.io/docs/en/cli) for all the options you can use to further configure `jest`. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..8593a990fc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,44 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +Remember, an issue is not the place to ask questions. If you have issues with the APIs or have a question about the Watson services, see [Stack Overflow](https://stackoverflow.com/questions/tagged/ibm-watson+node.js). + + Before you open an issue, please check if a similar issue already exists or has been closed before. + +**Check service status** + +1. For service issues or 5xx errors, first, go to the [IBM Cloud status page](https://cloud.ibm.com/status?component=compare-comply%2Cdiscovery%2Cconversation%2Cwatson-vision-combined%2Cnatural-language-understanding%2Cnatural-language-classifier%2Clanguage-translator%2Cpersonality-insights%2Cspeech-to-text%2Ctext-to-speech%2Ctone-analyzer&selected=status) and check the status of the service. +1. If the service status is OK, continue with a bug report. + +--- + +**Overview** +_What is the issue? Be concise and clear._ + +**Expected behavior** +_What did you expect to happen?_ + +**Actual behavior** +_What actually happened?_ + +**How to reproduce** +_Help us to reproduce what you experienced. Include your code snippets (without credentials)_ + +**Screenshots** +_If applicable, add screenshots to help explain your problem._ + +**SDK Version** +_Please provide the SDK version here._ + +**Additional information:** +- OS: _for example, iOS_ +- Which version of `Node` are you using? + +**Additional context** +_Add any other details about the problem._ diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000..338b84c19b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,18 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +Remember, an issue is not the place to ask questions. If you have issues with the APIs or have a question about the Watson services, see [Stack Overflow](https://stackoverflow.com/questions/tagged/ibm-watson+node.js). + +Before you open an issue, please check if a similar issue already exists or has been closed before. + +### When you open an issue for a feature request, please add as much detail as possible: + +- [ ] A descriptive title starting with the service name +- [ ] A description of the problem you're trying to solve +- [ ] A suggested solution if possible diff --git a/.github/issue_template.md b/.github/issue_template.md index a76155f281..7e0a46a605 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -1,4 +1,4 @@ -Remember, an issue is not the place to ask questions. You can use [Stack Overflow](http://stackoverflow.com/questions/tagged/ibm-watson-cognitive) for that, or you may want to start a discussion on the [dW Answers](https://developer.ibm.com/answers/questions/ask/?topics=watson). +Remember, an issue is not the place to ask questions. If you have issues with the APIs or have a question about the Watson services, see [Stack Overflow](https://stackoverflow.com/questions/tagged/ibm-watson+node.js). Before you open an issue, please check if a similar issue already exists or has been closed before. diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000000..e3e4aac149 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,17 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has had no + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml new file mode 100644 index 0000000000..bc62bed924 --- /dev/null +++ b/.github/workflows/build-test.yml @@ -0,0 +1,54 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support documentation. +# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Build and Test + +on: + push: + branches: [ '**' ] + pull_request: + branches: [ master ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + build_test: + name: Build and Test on Node ${{ matrix.node-version }} and ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + node-version: ['20.x', '22.x'] + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v2 + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + - name: Execute Node unit tests + run: | + npm ci + npm run build --if-present + npm run test-unit-travis + npm run check-packages + scripts/typedoc/generate_typedoc.sh + - name: Execute Node code coverage + if: matrix.node-version == '10.x' + run: npm run report-coverage + - name: Publish js docs + if: matrix.node-version == '10.x' + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + GHA_REPO_SLUG: ${{ github.repository }} + GHA_BRANCH: ${{ github.ref }} # non PR only need to get last part + GHA_PULL_REQUEST: ${{ github.event.number }} + GHA_BUILD_NUMBER: ${{ github.run_number }} + GHA_JOB_NUMBER: ${{ github.job_number }} + GHA_COMMIT: ${{ github.sha }} + # GHA_TAG: ${{ github.event.release.tag_name }} + run: scripts/jsdoc/publish_gha.sh diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000000..09eb5f76a4 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,50 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support documentation. +# This workflow will download a prebuilt Node version, install dependencies, build and deploy/publish a new release +# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages + +name: Deploy and Publish + +on: + workflow_run: + workflows: ["Build and Test"] + branches: [ master ] + types: + - completed + + # Allows you to run this workflow manually from the Action tab + workflow_dispatch: + +jobs: + deploy: + if: "!contains(github.event.head_commit.message, 'skip ci')" + name: Deploy and Publish + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + with: + persist-credentials: false + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: 20 + - name: Install Semantic Release dependencies + run: | + sudo apt-get install bumpversion + npm install -g semantic-release + npm install -g @semantic-release/changelog + npm install -g @semantic-release/exec + npm install -g @semantic-release/git + npm install -g @semantic-release/github + npm install -g @semantic-release/commit-analyzer + npm install -g @semantic-release/release-notes-generator + npm install + - name: Publish to Git Releases and Tags + if: ${{ github.event.workflow_run.conclusion == 'success' }} + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npx semantic-release # --dry-run + diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml new file mode 100644 index 0000000000..8b0b4df5ad --- /dev/null +++ b/.github/workflows/integration-test.yml @@ -0,0 +1,80 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support documentation. +# This workflow will download a prebuilt Node version, install dependencies and run integration tests + +name: Run Integration Tests + +on: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + integration_test: + name: Build and Run Integration Tests on Node ${{ matrix.node-version }} and ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + node-version: ['14.x'] + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v2 + + - name: Set up Node + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + + - name: Install Node dependencies + run: | + npm ci + npm run build --if-present + npm install -g jest + + - name: Execute Node integration tests + # continue-on-error: true + env: + ASSISTANT_URL: "https://api.us-south.assistant.watson.cloud.ibm.com" + ASSISTANT_APIKEY: ${{ secrets.WA_APIKEY }} + ASSISTANT_WORKSPACE_ID: ${{ secrets.WA_WORKSPACE_ID }} + ASSISTANT_ASSISTANT_ID: ${{ secrets.WA_ASSISTANT_ID }} + NATURAL_LANGUAGE_UNDERSTANDING_URL: "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com" + NATURAL_LANGUAGE_UNDERSTANDING_APIKEY: ${{ secrets.NLU_APIKEY }} + SPEECH_TO_TEXT_URL: "https://api.us-south.speech-to-text.watson.cloud.ibm.com" + SPEECH_TO_TEXT_APIKEY: ${{ secrets.STT_APIKEY }} + TEXT_TO_SPEECH_URL: "https://api.us-south.text-to-speech.watson.cloud.ibm.com" + TEXT_TO_SPEECH_APIKEY: ${{ secrets.TTS_APIKEY }} + DISCOVERY_V2_URL: "https://api.us-south.discovery.watson.cloud.ibm.com" + DISCOVERY_V2_APIKEY: ${{ secrets.D2_APIKEY }} + DISCOVERY_V2_PROJECT_ID: ${{ secrets.D2_PROJECT_ID }} + DISCOVERY_V2_COLLECTION_ID: ${{ secrets.D2_COLLECTION_ID }} + + run: | + mv test/resources/auth.gha.js test/resources/auth.js + jest --silent --coverage=false --runInBand --no-colors --testNamePattern='^((?!@slow).)*$' test/integration/assistant.v1.test.js + jest --silent --coverage=false --runInBand --no-colors --testNamePattern='^((?!@slow).)*$' test/integration/assistant.v2.test.js + jest --silent --coverage=false --runInBand --no-colors --testNamePattern='^((?!@slow).)*$' test/integration/discovery.v2.test.js + jest --silent --coverage=false --runInBand --no-colors --testNamePattern='^((?!@slow).)*$' test/integration/speech-to-text.test.js + jest --silent --coverage=false --runInBand --no-colors --testNamePattern='^((?!@slow).)*$' test/integration/text-to-speech.test.js + +# Do not notify on success. We will leave the code here just in case we decide to switch gears + - name: Notify slack on success + if: false # success() + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} + uses: voxmedia/github-action-slack-notify-build@v1 + with: + channel: watson-e2e-tests + status: SUCCESS + color: good + + - name: Notify slack on failure + if: failure() + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} + uses: voxmedia/github-action-slack-notify-build@v1 + with: + channel: watson-e2e-tests + status: FAILED + color: danger diff --git a/.gitignore b/.gitignore index 374169e72f..13e9632207 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ coverage test/resources/auth.js test/resources/-auth.js # to make sure tests run without the auth file test/resources/tts-output.ogg -test/resources/visual_recognition.prepop/images +test/resources/secrets.tar .idea doc/ .vscode/ @@ -15,3 +15,25 @@ dist/ .eslintcache examples/speech_to_text_microphone_input/*.wav examples/speech_to_text_microphone_input/*.txt +lib/*.js +conversation/*.js +dialog/*.js +discovery/*.js +natural-language-understanding/*.js +text-to-speech/*.js +speech-to-text/*.js +authorization/*.js +assistant/*.js +iam-token-manager/*.js +index.js +sdk.js +.nyc_output +**/*.d.ts +!*/blob.d.ts +**/*.js.map +coverage.lcov +.swagger-codegen-ignore +*.log +*.tmp +.pre-commit-config.yaml +.secrets.baseline diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 2708aab942..0000000000 --- a/.jshintrc +++ /dev/null @@ -1,45 +0,0 @@ -{ - "globals": { - "jasmine": false, - "spyOn": false, - "it": false, - "console": false, - "describe": true, - "expect": false, - "beforeEach": false, - "before": false, - "after": false, - "waits": false, - "waitsFor": false, - "runs": false - }, - - "node" : true, - "browser" : false, - - "boss" : false, - "curly": false, - "debug": false, - "devel": false, - "eqeqeq": true, - "evil": true, - "forin": false, - "immed": true, - "indent": 2, - "quotmark": "single", - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": true, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": true, - "white": true, - "unused": true, - "esversion": 6 -} diff --git a/.npmignore b/.npmignore index dd260ac587..3e7cb42313 100644 --- a/.npmignore +++ b/.npmignore @@ -12,6 +12,9 @@ examples LICENSE CONTRIBUTING.md RELEASE.md +CONTRIBUTING.md +CHANGELOG.md +UPGRADE-4.0.md jsdoc/ doc/ auth.js.enc @@ -21,3 +24,23 @@ transform.js scripts/ # this is created in the build on travis ci when it updates the docs in the gh-pages branch gh-pages/ +tsconfig.json +tslint.json +typings.json +typings +.vscode +.nyc_output +.github +.eslintrc.js +.eslintcache +.eslintignore +.gitattributes +.prettierrc +.releaserc +.snyk +*.ts +!*.d.ts +watson-developer-cloud-*.tgz +*.log +secrets.tar.enc +docker diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..0829ba0afb --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": false, + "printWidth": 100, + "tabWidth": 2, + "singleQuote": true, + "trailingComma": "es5", + "parser": "babel", + "arrowParens": "avoid" +} diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000000..1611393656 --- /dev/null +++ b/.releaserc @@ -0,0 +1,17 @@ +{ + "branch": "master", + "verifyConditions": ["@semantic-release/changelog", "@semantic-release/npm", "@semantic-release/git"], + "prepare": ["@semantic-release/changelog", "@semantic-release/npm", "@semantic-release/git"], + "publish": [ + ["@semantic-release/npm", { + "pkgRoot": "dist" + }], + { + "path": "@semantic-release/github", + "assets": [ + {"path": "dist/dist/watson.js"}, + {"path": "dist/dist/watson.min.js"} + ] + } + ] +} diff --git a/.secrets.baseline b/.secrets.baseline new file mode 100644 index 0000000000..0f5c7c7d60 --- /dev/null +++ b/.secrets.baseline @@ -0,0 +1,324 @@ +{ + "exclude": { + "files": "package-lock.json|^.secrets.baseline$", + "lines": null + }, + "generated_at": "2024-02-26T18:58:05Z", + "plugins_used": [ + { + "name": "AWSKeyDetector" + }, + { + "name": "ArtifactoryDetector" + }, + { + "name": "AzureStorageKeyDetector" + }, + { + "base64_limit": 4.5, + "name": "Base64HighEntropyString" + }, + { + "name": "BasicAuthDetector" + }, + { + "name": "BoxDetector" + }, + { + "name": "CloudantDetector" + }, + { + "ghe_instance": "github.ibm.com", + "name": "GheDetector" + }, + { + "name": "GitHubTokenDetector" + }, + { + "hex_limit": 3, + "name": "HexHighEntropyString" + }, + { + "name": "IbmCloudIamDetector" + }, + { + "name": "IbmCosHmacDetector" + }, + { + "name": "JwtTokenDetector" + }, + { + "keyword_exclude": null, + "name": "KeywordDetector" + }, + { + "name": "MailchimpDetector" + }, + { + "name": "NpmDetector" + }, + { + "name": "PrivateKeyDetector" + }, + { + "name": "SlackDetector" + }, + { + "name": "SoftlayerDetector" + }, + { + "name": "SquareOAuthDetector" + }, + { + "name": "StripeDetector" + }, + { + "name": "TwilioKeyDetector" + } + ], + "results": { + "README.md": [ + { + "hashed_secret": "d4c3d66fd0c38547a3c7a4c6bdc29c36911bc030", + "is_secret": false, + "is_verified": false, + "line_number": 155, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "32e8612d8ca77c7ea8374aa7918db8e5df9252ed", + "is_secret": false, + "is_verified": false, + "line_number": 650, + "type": "Secret Keyword", + "verified_result": null + } + ], + "assistant/v2.ts": [ + { + "hashed_secret": "4b28f8a2cf2d8920de88932ead405e6bddb15da2", + "is_secret": false, + "is_verified": false, + "line_number": 3637, + "type": "Secret Keyword", + "verified_result": null + } + ], + "discovery/v1.ts": [ + { + "hashed_secret": "e8fc807ce6fbcda13f91c5b64850173873de0cdc", + "is_secret": false, + "is_verified": false, + "line_number": 5550, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "fdee05598fdd57ff8e9ae29e92c25a04f2c52fa6", + "is_secret": false, + "is_verified": false, + "line_number": 5551, + "type": "Secret Keyword", + "verified_result": null + } + ], + "examples/browserify/.env.example": [ + { + "hashed_secret": "b896626ea92a77d92b362d5802a64bacaceb16ea", + "is_secret": false, + "is_verified": false, + "line_number": 1, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "bfee37810942d8fbd564e24cf870a1b5b46d3152", + "is_secret": false, + "is_verified": false, + "line_number": 1, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "examples/webpack/.env.example": [ + { + "hashed_secret": "b896626ea92a77d92b362d5802a64bacaceb16ea", + "is_secret": false, + "is_verified": false, + "line_number": 1, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "bfee37810942d8fbd564e24cf870a1b5b46d3152", + "is_secret": false, + "is_verified": false, + "line_number": 1, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "scripts/jsdoc/generate_index_html.sh": [ + { + "hashed_secret": "973f71aa51bf4dcef6aa10f52089747a85c64a73", + "is_secret": false, + "is_verified": false, + "line_number": 19, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "speech-to-text/v1-generated.ts": [ + { + "hashed_secret": "1b214d8483f6b115656b6910c696e13e8881b66c", + "is_secret": false, + "is_verified": false, + "line_number": 661, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/integration/discovery.v1.test.js": [ + { + "hashed_secret": "789b49606c321c8cf228d17942608eff0ccc4171", + "is_secret": false, + "is_verified": false, + "line_number": 221, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "6c475a361bc57d2e4e2f82a93d79efd8abc1c58b", + "is_secret": false, + "is_verified": false, + "line_number": 254, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/integration/speech-to-text.test.js": [ + { + "hashed_secret": "7f99709b89f67274523e8eeed2a75652f1e468db", + "is_secret": false, + "is_verified": false, + "line_number": 404, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/resources/natural_language_understanding/energy-policy.html": [ + { + "hashed_secret": "a5caa47c9d47bd0410a29817a5f5618b26ba5256", + "is_secret": false, + "is_verified": false, + "line_number": 531, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "test/resources/sampleHtml.htm": [ + { + "hashed_secret": "58074822064073d39b641d6156b2d70899b27b0d", + "is_secret": false, + "is_verified": false, + "line_number": 9, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "test/resources/sampleHtml.html": [ + { + "hashed_secret": "58074822064073d39b641d6156b2d70899b27b0d", + "is_secret": false, + "is_verified": false, + "line_number": 9, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "test/unit/assistant.v1.test.js": [ + { + "hashed_secret": "b8473b86d4c2072ca9b08bd28e373e8253e865c4", + "is_secret": false, + "is_verified": false, + "line_number": 5625, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/unit/authorization.test.js": [ + { + "hashed_secret": "9a3b8c41e6674a4d301a8e1598f4123f000afd4f", + "is_secret": false, + "is_verified": false, + "line_number": 12, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "6367c48dd193d56ea7b0baad25b19455e529f5ee", + "is_secret": false, + "is_verified": false, + "line_number": 19, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/unit/discovery.v1.test.js": [ + { + "hashed_secret": "b8473b86d4c2072ca9b08bd28e373e8253e865c4", + "is_secret": false, + "is_verified": false, + "line_number": 5971, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/unit/discovery.v2.test.js": [ + { + "hashed_secret": "b8473b86d4c2072ca9b08bd28e373e8253e865c4", + "is_secret": false, + "is_verified": false, + "line_number": 3471, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/unit/iam-token-manager.test.js": [ + { + "hashed_secret": "6367c48dd193d56ea7b0baad25b19455e529f5ee", + "is_secret": false, + "is_verified": false, + "line_number": 6, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/unit/speech-helpers.test.js": [ + { + "hashed_secret": "9a3b8c41e6674a4d301a8e1598f4123f000afd4f", + "is_secret": false, + "is_verified": false, + "line_number": 13, + "type": "Secret Keyword", + "verified_result": null + } + ], + "test/unit/speech-to-text.v1.test.js": [ + { + "hashed_secret": "b8473b86d4c2072ca9b08bd28e373e8253e865c4", + "is_secret": false, + "is_verified": false, + "line_number": 436, + "type": "Secret Keyword", + "verified_result": null + } + ] + }, + "version": "0.13.1+ibm.56.dss", + "word_list": { + "file": null, + "hash": null + } +} diff --git a/.snyk b/.snyk new file mode 100644 index 0000000000..799b2f5276 --- /dev/null +++ b/.snyk @@ -0,0 +1,8 @@ +# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. +version: v1.13.5 +ignore: {} +# patches apply the minimum changes required to fix a vulnerability +patch: + SNYK-JS-LODASH-450202: + - async > lodash: + patched: '2019-07-08T23:56:47.595Z' diff --git a/.travis.yml b/.travis.yml index 33a0b11c47..5d818caad6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,24 +1,30 @@ language: node_js sudo: false node_js: -- 4 -- 6 -- stable +- 10 +- 12 +cache: + npm: false +before_install: +- '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ ! -z ${encrypted_58d69b955d05_key} + ] && openssl aes-256-cbc -K $encrypted_58d69b955d05_key -iv $encrypted_58d69b955d05_iv + -in secrets.tar.enc -out test/resources/secrets.tar -d || true' +- '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ ! -z ${encrypted_58d69b955d05_key} + ] && cd test/resources/ && tar xvf secrets.tar && cd ../.. || true' script: -- npm test -- npm run doc +- npm run build +- npm run test-unit-travis || travis_terminate 1 +- npm run test-integration-travis || node scripts/report_integration_test.js || travis_terminate + 1 +- npm run check-packages +- sh scripts/typedoc/generate_typedoc.sh after_success: +- npm run report-coverage - scripts/jsdoc/publish.sh -- scripts/create_semver_tag.sh -before_install: -- '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && openssl aes-256-cbc -K $encrypted_cb4d3d070e32_key - -iv $encrypted_cb4d3d070e32_iv -in auth.js.enc -out test/resources/auth.js -d || - true' deploy: - provider: npm - email: nathan@nfriedly.com - api_key: - secure: SWmOXKulWp2sDEpt/0/Ad6DqZzgjFRLNxJbN5xyIZfkr2Z5SItSiewQn0A+Q0vd2Ug1lZNsF1dOcp9HDWSUE44PHRzjdSH498djI2iNbVdPMaMYQkE6dAnixHOxPbW3rzFWlS+LUPWjEmaeTAH2TkpfjxJURng7iUrrmS3HRLvU= +- provider: script + skip_cleanup: true + script: npx semantic-release on: - tags: true + node: 12 repo: watson-developer-cloud/node-sdk diff --git a/BUG_BOUNTY.md b/BUG_BOUNTY.md new file mode 100644 index 0000000000..56a8877bbd --- /dev/null +++ b/BUG_BOUNTY.md @@ -0,0 +1,2 @@ +## Bug Bounty Hunters Notice +API keys found from commit c122731b33ef75529e0660a22b294afc5be3fc05 have already been revoked and will not be accepted for bug bounties. \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ed0bf5aee4..d18ea803dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,1445 @@ -Moved to https://github.com/watson-developer-cloud/node-sdk/wiki/Change-Log +# [12.2.0](https://github.com/watson-developer-cloud/node-sdk/compare/v12.1.1...v12.2.0) (2026-01-22) + + +### Features + +* **stt:** add recognize enrichments, add new function detectLanguage ([cb10121](https://github.com/watson-developer-cloud/node-sdk/commit/cb10121c08be465122648be7006ed3eb71e0a58c)) +* **wa-v2:** add dtmf and end_session response types ([98b4622](https://github.com/watson-developer-cloud/node-sdk/commit/98b4622005400875ee9cd50dd02e81e579d6e21f)) + +## [12.1.1](https://github.com/watson-developer-cloud/node-sdk/compare/v12.1.0...v12.1.1) (2025-11-12) + + +### Bug Fixes + +* **stt:** add missing smart_formatting_version param ([13fb2ab](https://github.com/watson-developer-cloud/node-sdk/commit/13fb2ab25b4f8a1cba83260051e414a042d555de)) + +# [12.1.0](https://github.com/watson-developer-cloud/node-sdk/compare/v12.0.1...v12.1.0) (2025-11-11) + + +### Features + +* **stt:** add new sad_module param to recognize functions ([eda5976](https://github.com/watson-developer-cloud/node-sdk/commit/eda597600ae3250739963acc72b1b8495c0a328a)) +* **tts:** add new voice models ([3660b3a](https://github.com/watson-developer-cloud/node-sdk/commit/3660b3a1f3102fa2e7ac71c667d301597012515f)) + +## [12.0.1](https://github.com/watson-developer-cloud/node-sdk/compare/v12.0.0...v12.0.1) (2025-10-07) ([e9a6b38](https://github.com/watson-developer-cloud/node-sdk/commit/e9a6b38396d043772bb4618ff071046c94f6ea48)) + +#### **wa-v2** – Patch Release Notes #### + +This release addresses several issues identified in version 12.0.0: + +- Fixed missing parameter in HTTP request creation: +The environments path parameter was previously omitted from the message and messageStateless functions when generating HTTP requests. This parameter has now been properly included to ensure consistent request behavior. + +- Added required environmentId parameter to session deletion: +The `deleteSession` function now correctly requires the `environmentId` parameter. This change was originally intended for the 12.0.0 release and has been implemented as part of this update. + + +# [12.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v11.0.0...v12.0.0) (2025-10-06) + + +### Features + +* **wa-v2:** update required params for createSession ([7b9a5cd](https://github.com/watson-developer-cloud/node-sdk/commit/7b9a5cdacea5b426e94ab99f6ad4a359c2b96c00)) + + +### BREAKING CHANGES + +* **wa-v2:** `assistantId` and `environmentId` are now required parameters for the `createSession` function + +# [11.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v10.0.0...v11.0.0) (2025-06-19) + + +### Bug Fixes + +* **wa v1&v2:** update default service name ([5d472cf](https://github.com/watson-developer-cloud/node-sdk/commit/5d472cf7c263a4a2afa7a11a0b03aad1320403b0)) + + +### Features + +* **nlu:** add signal to axios options ([8c88e3e](https://github.com/watson-developer-cloud/node-sdk/commit/8c88e3e4e679609b534a7d63b9c3ddd3e520267d)) +* **sdk-core:** update the ibm-cloud-sdk-core to 5.4.0 ([bc24dd2](https://github.com/watson-developer-cloud/node-sdk/commit/bc24dd2f7c855ac5a48b25068280cdd093b6dd58)) +* **tts&stt:** Add new model enum values; add signal to axios ([eb919a5](https://github.com/watson-developer-cloud/node-sdk/commit/eb919a5c85409a190c4687857878487b56d0b66e)) +* **wav1&discv2:** add signal to axios options ([32c5a0a](https://github.com/watson-developer-cloud/node-sdk/commit/32c5a0afc0b22bffd28656bbd9e4ccec9fcde849)) +* **wav2:** Add turn events and required properties; add signal to axios properties ([00bac4b](https://github.com/watson-developer-cloud/node-sdk/commit/00bac4bc1c699b2688a65821a12f3fafa4fbcdfa)) + + +### BREAKING CHANGES + +* **wav2:** add required conversational_search param to SearchSettings interface + +# [10.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v9.1.0...v10.0.0) (2024-12-04) + + +### Code Refactoring + +* **auth:** remove deprecated AuthorizationV1 class ([3f8addb](https://github.com/watson-developer-cloud/node-sdk/commit/3f8addb469c7e7ec97bb39b4f8552cda4f8fa040)) + + +### Features + +* **discov1:** remove discoV1 ([936edc1](https://github.com/watson-developer-cloud/node-sdk/commit/936edc130ea73760932a30444b8ad8c146a07b56)) +* **discov2:** add functions for new batches api ([5f81415](https://github.com/watson-developer-cloud/node-sdk/commit/5f814151a3dd7be7ae8c6c16bc7e06942c3ceb45)) +* **lt:** remove lt and other deprecated resources ([6478da6](https://github.com/watson-developer-cloud/node-sdk/commit/6478da6791df6fc2bd03056eb6cbdef1a1567af5)) +* **stt:** add new speech models ([c4105ca](https://github.com/watson-developer-cloud/node-sdk/commit/c4105cac719a15791fbde45edfed740914bb5693)) +* **WxA:** add new functions and update required params ([b710609](https://github.com/watson-developer-cloud/node-sdk/commit/b71060916e44604543b54f2d42368a18fd4d18df)) + + +### BREAKING CHANGES + +* **auth:** AuthorizationV1 is removed in favor of the long supported node-sdk-core authenticators located in /auth +* **WxA:** `environmentId` now required for `message` and `messageStateless` functions + +Add support for message streaming and new APIs +New functions: createProviders, listProviders, updateProviders, createReleaseExport, downloadReleaseExport, createReleaseImport, getReleaseImportStatus, messageStream, messageStreamStateless +* **lt:** LanguageTranslator functionality has been removed +* **discov1:** DiscoveryV1 functionality has been removed + +# [9.1.0](https://github.com/watson-developer-cloud/node-sdk/compare/v9.0.1...v9.1.0) (2024-05-17) + + +### Features + +* **discov2:** add ocrEnabled parameter ([5a9c30e](https://github.com/watson-developer-cloud/node-sdk/commit/5a9c30e181e043f7ba6aee8af1772944c94a0a3a)) +* **stt:** add speechBeginEvent param to recognize func ([8f19640](https://github.com/watson-developer-cloud/node-sdk/commit/8f196401c48674ddb3503069dcd17ff7a6e16b2a)) +* **stt:** remove interimResults and lowLatency wss params ([6c79d93](https://github.com/watson-developer-cloud/node-sdk/commit/6c79d93e8f4e57422238a4076eb90fe49c9f14bf)) + +## [9.0.1](https://github.com/watson-developer-cloud/node-sdk/compare/v9.0.0...v9.0.1) (2024-03-13) + + +### Bug Fixes + +* **stt:** change smartFormattingVersion type to number ([3db377b](https://github.com/watson-developer-cloud/node-sdk/commit/3db377bb58c5c2bbbfbb7d28889dd503a8116bee)) +* **wss:** add smartFormattingVersion param ([d64f155](https://github.com/watson-developer-cloud/node-sdk/commit/d64f15513ff786d167168b4d863c8a99ca8eff7e)) + +# [9.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v8.0.0...v9.0.0) (2024-02-26) + + +### Features + +* **disco-v2:** interface changes ([619d09b](https://github.com/watson-developer-cloud/node-sdk/commit/619d09b80580a13b30fd467ca6af47d245e2f5de)) +* **disco-v2:** new params for EnrichmentOptions ([e826b89](https://github.com/watson-developer-cloud/node-sdk/commit/e826b8955ce896d34436b08c4ec7fc7854a45d66)) +* **mcsp:** expose McspAuthenticator ([94d3efc](https://github.com/watson-developer-cloud/node-sdk/commit/94d3efc9fba715ff35e5269f4e210c9a3c6dbf50)) +* **stt:** new params ([06bb328](https://github.com/watson-developer-cloud/node-sdk/commit/06bb3286fd3828bd3486845e3691d483c65bfc1e)) +* **ts:** add better ts typing and linting ([762c6bf](https://github.com/watson-developer-cloud/node-sdk/commit/762c6bf23e61003abf133ae6430f8d9fec08c56e)) +* **wa-v2:** new params orchestration and asyncCallout ([5124107](https://github.com/watson-developer-cloud/node-sdk/commit/5124107fedda2aaa574202ceda69af56739b347e)) +* **wa-v2:** support for private variables ([784c476](https://github.com/watson-developer-cloud/node-sdk/commit/784c476800cdc73ba7c1413482f5591d5d3d168f)) + + +### BREAKING CHANGES + +* **wa-v2:** Renaming and changing of multiple interfaces + +# [8.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v7.1.2...v8.0.0) (2023-03-16) + + +### Bug Fixes + +* **deps:** upgrade core version to address jsonwebtoken vulnerability ([67b169d](https://github.com/watson-developer-cloud/node-sdk/commit/67b169d795b6d7c828e078b891ac3b0940ef0def)) + + +### Features + +* **assistantv2:** add several new functions ([2eae4e9](https://github.com/watson-developer-cloud/node-sdk/commit/2eae4e975cd97408f9ad65af642e858e2fd12b56)) +* **assistantv2:** improved typing ([730114e](https://github.com/watson-developer-cloud/node-sdk/commit/730114ee39ac780d089416923cbc1ef7037f1d52)) +* **discov2:** new aggregation types ([9409082](https://github.com/watson-developer-cloud/node-sdk/commit/9409082da9436860632543f57eb69a5e12472776)) +* **lt,stt:** add and remove model constants ([d41c7ee](https://github.com/watson-developer-cloud/node-sdk/commit/d41c7ee5f88438df5b5e123e67656d4a78e7bf26)) +* **nlu:** remove all sentimentModel functions ([0f17d68](https://github.com/watson-developer-cloud/node-sdk/commit/0f17d6871f501c61bc62a30d1760ed932adc7982)) +* **nlu:** remove beta model param from Sentiment ([8815b1a](https://github.com/watson-developer-cloud/node-sdk/commit/8815b1a0e6f39dc6202c344a944ecbf4250cf7e7)) +* **stt, tts:** add more models ([93cbe80](https://github.com/watson-developer-cloud/node-sdk/commit/93cbe8014586ab8b31fbb579628b1ff46c54f75c)) +* **tts:** add new params to websocket function ([13ab63f](https://github.com/watson-developer-cloud/node-sdk/commit/13ab63f8493b6d0feffcdfd610b554684e80cb53)) +* **tts:** add params and add model constants ([b9fad7b](https://github.com/watson-developer-cloud/node-sdk/commit/b9fad7b8e4c6982705c60ceb5adc8684bd7ef81a)) + + +### BREAKING CHANGES + +* **assistantv2:** createSession param removed +* **assistantv2:** removing and changing of interface properties +* **discov2:** confidence property removed +* **discov2:** smartDocumentUnderstanding param removed +* **discov2:** QueryAggregation structure changed +* **nlu:** remove all sentimentModel functions and interfaces + +## [7.1.2](https://github.com/watson-developer-cloud/node-sdk/compare/v7.1.1...v7.1.2) (2022-10-25) + + +### Bug Fixes + +* **deps:** upgrade core version to address file-type vulnerability ([c724fc3](https://github.com/watson-developer-cloud/node-sdk/commit/c724fc3a6bb6646c1bb8565f1fdaec69bff33666)) + +## [7.1.1](https://github.com/watson-developer-cloud/node-sdk/compare/v7.1.0...v7.1.1) (2022-08-16) + + +### Bug Fixes + +* **package.json:** rollback core version ([f74c48c](https://github.com/watson-developer-cloud/node-sdk/commit/f74c48c128e562b682b1c2571df1a569ffb4bc32)) + +# [7.1.0](https://github.com/watson-developer-cloud/node-sdk/compare/v7.0.0...v7.1.0) (2022-08-10) + + +### Features + +* **assistant-v1:** update models and add new methods ([e320105](https://github.com/watson-developer-cloud/node-sdk/commit/e320105607adcbd8700ebba16872d84de2fb6c9e)) +* **assistant-v2:** update models and add new methods ([0a66745](https://github.com/watson-developer-cloud/node-sdk/commit/0a667450dcc10d0794a198d6bcd72f0edd40930e)) +* **discovery-v2:** update models and add several new methods ([d8bf765](https://github.com/watson-developer-cloud/node-sdk/commit/d8bf765a9eed0645200e5e941c02128b8df6a67f)) +* **nlu:** add trainingParameters parameter ([6e3f676](https://github.com/watson-developer-cloud/node-sdk/commit/6e3f67688d2d9cb650e3c4a2c269d5a54f3d5626)) +* **package.json:** upgrade bm-cloud-sdk-core ([ab019de](https://github.com/watson-developer-cloud/node-sdk/commit/ab019de01ea3c6a16a11e324ab3461ad53931a78)) +* **stt:** update parameters ([3be4085](https://github.com/watson-developer-cloud/node-sdk/commit/3be40857df486670ef405d6aba23683b6527a469)) +* **tts:** add parameters ([a3ed589](https://github.com/watson-developer-cloud/node-sdk/commit/a3ed58939391d74eeccdda12397ff6361ce6ca60)) +* **wss:** add new websocket params ([8cce07c](https://github.com/watson-developer-cloud/node-sdk/commit/8cce07c8aed80c3b443bf4a650071e06f0ff274e)) + +# [7.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v6.2.2...v7.0.0) (2022-03-21) + + +### Features + +* **assistantv1:** assistant v1 generated with new spec ([5c6e9db](https://github.com/watson-developer-cloud/node-sdk/commit/5c6e9db67a3b99b66f9fa1ac4ecfcbb7f54ac54b)) +* **assistantv2:** assistant v2 generated with new spec ([7f7d96f](https://github.com/watson-developer-cloud/node-sdk/commit/7f7d96fbbf0afc15cbb1e2243c88522daa9d42fd)) +* **compare-comply:** remove compare-comply ([a851442](https://github.com/watson-developer-cloud/node-sdk/commit/a851442ae7afc981a786c04529921ceafad1552a)) +* **discoveryv1:** discovery v1 generated with new spec ([cf1d976](https://github.com/watson-developer-cloud/node-sdk/commit/cf1d9760482f44a53cc3d1b2d4c19d052ce87acb)) +* **discoveryv1:** regen with more recent defs ([46752a1](https://github.com/watson-developer-cloud/node-sdk/commit/46752a16b622f1e97589c392b34804480c78f0a9)) +* **lt:** lT generated with new spec ([ed54e99](https://github.com/watson-developer-cloud/node-sdk/commit/ed54e99c587dc4be28846562003961a5878bdd32)) +* **nlc:** remove NLC ([698b3be](https://github.com/watson-developer-cloud/node-sdk/commit/698b3be2811dfaed8e6094776ef534b3977d30c5)) +* **nlu:** nLU generated with new spec ([beeb8a0](https://github.com/watson-developer-cloud/node-sdk/commit/beeb8a03d182487e1a1761c707b386e510c3bb33)) +* **pi:** remove PI ([350ed36](https://github.com/watson-developer-cloud/node-sdk/commit/350ed3678ec26404f1fc47986bdda38ff5b0140a)) +* **secrets:** run detect secrets ([5a5690a](https://github.com/watson-developer-cloud/node-sdk/commit/5a5690a8f7b697c9f19097d20ee465cd1302202e)) +* **stt:** change addGrammar to take a file ([d21b462](https://github.com/watson-developer-cloud/node-sdk/commit/d21b462044c18b3d06c5592f4b038338b3c698d9)) +* **stt:** stt generated with new spec ([ec98a33](https://github.com/watson-developer-cloud/node-sdk/commit/ec98a33d37eacb2209ea344550ca756a35e35654)) +* **tone analyzer:** remove tone analyzer ([fbd5be1](https://github.com/watson-developer-cloud/node-sdk/commit/fbd5be13525ec0e9283d378b4dea1998f87f0f3a)) +* **tts:** tTS generated with new spec ([b1e87d3](https://github.com/watson-developer-cloud/node-sdk/commit/b1e87d389f88f762cc23ecc9768c0620a589b64d)) +* **vizrec:** remove vizrec ([a6f3134](https://github.com/watson-developer-cloud/node-sdk/commit/a6f31347d1d34fe08b10a7a102aab2cfc19987ff)) + + +### BREAKING CHANGES + +* **stt:** addGrammar no longer accepts a string and must take a file +* **discoveryv1:** QueryAggregation subclasses changed, be sure to regen models +* **stt:** Changed file type of addGrammar from String to Data +* **discoveryv1:** QueryAggregation - subclasses have changed +* **assistantv2:** MessageOutputDebug - renamed DialogNodesVisited to DialogNodeVisited; RuntimeEntity +- removed optional metadata property +* **assistantv1:** Removed required text property on outputdata and removed optional metadata property +from runtimeentity +* **tone analyzer:** Tone Analyzer functionality has been removed +* **vizrec:** VizRec functionality has been removed +* **pi:** PI functionality has been removed +* **nlc:** NLC functionality has been removed +* **compare-comply:** Compare and comply functionality has been removed + +## [6.2.2](https://github.com/watson-developer-cloud/node-sdk/compare/v6.2.1...v6.2.2) (2022-01-19) + + +### Bug Fixes + +* **stt:** update word confidence and timestamps type ([9f4d664](https://github.com/watson-developer-cloud/node-sdk/commit/9f4d6645fa8080b41f4f99fb0cf07e3f5b68a4c1)) + +## [6.2.1](https://github.com/watson-developer-cloud/node-sdk/compare/v6.2.0...v6.2.1) (2021-09-21) + + +### Bug Fixes + +* **stt:** fix timestamps type to properly reflect response model ([1efa983](https://github.com/watson-developer-cloud/node-sdk/commit/1efa98382303fda77ba078541e0c7922d750339d)) + +# [6.2.0](https://github.com/watson-developer-cloud/node-sdk/compare/v6.1.2...v6.2.0) (2021-09-14) + + +### Bug Fixes + +* **assistant_v2 discovery_v1:** regen with final release ([cc99978](https://github.com/watson-developer-cloud/node-sdk/commit/cc999789e4f308d7859434cd1338361274f26732)) +* **discovery_v1:** update status model ([bb69a7e](https://github.com/watson-developer-cloud/node-sdk/commit/bb69a7eec2bce738d17b06b246d850e8e0dcf8ba)) +* **nlu:** fix listClassificationModels ([8c09145](https://github.com/watson-developer-cloud/node-sdk/commit/8c09145e9f7ad41b767e1500bf5d87826257ff81)) +* **package.json:** bump cloud sdk core version ([f4579b4](https://github.com/watson-developer-cloud/node-sdk/commit/f4579b47b7aca8ba67ac0978f7220345f4481a6f)) +* regenerate with correct version ([16420fc](https://github.com/watson-developer-cloud/node-sdk/commit/16420fc224972fde458e52fbe4a62ec4a699d55d)) +* **package.json:** bump axios version ([29b9b4e](https://github.com/watson-developer-cloud/node-sdk/commit/29b9b4ec47cf0d4b20b2b21c8f296f5f23e1a7ab)) + + +### Features + +* **assistant_v1:** alt_text property added ([32c7d2e](https://github.com/watson-developer-cloud/node-sdk/commit/32c7d2ebe194922dc971eda54067738643f08870)) +* **assistant_v2:** add properties to model and Image response ([6f0bb29](https://github.com/watson-developer-cloud/node-sdk/commit/6f0bb29a009edc3f13defb89994f2fd62c8b4133)) +* **discovery_v2:** update CreateProjectConstants Type enum ([f272fc6](https://github.com/watson-developer-cloud/node-sdk/commit/f272fc64a5e997679fb277f6a94c4c4aa571c2d7)) +* **stt:** support more languages ([84bb18d](https://github.com/watson-developer-cloud/node-sdk/commit/84bb18da2a4431c4f59cd95f0e05c8d61cd7ab85)) +* **tts:** new voice models added ([1e64b92](https://github.com/watson-developer-cloud/node-sdk/commit/1e64b92ed37428993c4f1f1cbedc7c733668ee81)) + +## [6.1.2](https://github.com/watson-developer-cloud/node-sdk/compare/v6.1.1...v6.1.2) (2021-08-25) + + +### Bug Fixes + +* **nlc:** add deprecation warning ([5b269ae](https://github.com/watson-developer-cloud/node-sdk/commit/5b269ae1afec11bdc0eb078f82f12827d336f644)), closes [#9622](https://github.com/watson-developer-cloud/node-sdk/issues/9622) + +## [6.1.1](https://github.com/watson-developer-cloud/node-sdk/compare/v6.1.0...v6.1.1) (2021-06-02) + + +### Bug Fixes + +* **tts:** remove unnecessary filename param ([d30bb25](https://github.com/watson-developer-cloud/node-sdk/commit/d30bb259a4de3cc6e4f20f6bc7b1e328c60aa0b0)) + +# [6.1.0](https://github.com/watson-developer-cloud/node-sdk/compare/v6.0.4...v6.1.0) (2021-05-27) + + +### Bug Fixes + +* **nlu:** remove ListCategoriesModelsResponse ([82a82a3](https://github.com/watson-developer-cloud/node-sdk/commit/82a82a3edd3ce3ba045f6320aeb1d53da9d3ca68)) +* **wss,assistantv1:** address review changes ([ab0c8a2](https://github.com/watson-developer-cloud/node-sdk/commit/ab0c8a294450358a9222df3b361206c4b65bb72d)) + + +### Features + +* **assistantv1:** generation release changes ([8b10b2d](https://github.com/watson-developer-cloud/node-sdk/commit/8b10b2d6b1df0dcd20001f8898ef511b8d2b14f5)) +* **assistantv2:** generation release changes ([403145e](https://github.com/watson-developer-cloud/node-sdk/commit/403145e3db666db5189ef7111dc25a062c53e9b2)) +* **discov2:** generation release changes ([8e70b7f](https://github.com/watson-developer-cloud/node-sdk/commit/8e70b7faaa9d3fcd35e3c34aa9d5b04e80a2c81a)) +* **nlu:** generation release changes ([4d74c0a](https://github.com/watson-developer-cloud/node-sdk/commit/4d74c0a6fccbf50685733c9a3002cea819f26c98)) +* **stt:** update websocket parameters ([8f257e7](https://github.com/watson-developer-cloud/node-sdk/commit/8f257e7ffca1e13d895c6ae76f235306b30bd57d)) +* **stt-tts:** generation release changes ([1bc946b](https://github.com/watson-developer-cloud/node-sdk/commit/1bc946b6e53cf75c03d8c51f0fba613615dae3bb)) + +## [6.0.4](https://github.com/watson-developer-cloud/node-sdk/compare/v6.0.3...v6.0.4) (2021-04-05) + + +### Bug Fixes + +* update core to enable use with more front-end environments ([bb57a23](https://github.com/watson-developer-cloud/node-sdk/commit/bb57a23e311bfdf3b4c8636e3a9d4c03efd3dd78)) + +## [6.0.3](https://github.com/watson-developer-cloud/node-sdk/compare/v6.0.2...v6.0.3) (2021-02-22) + + +### Bug Fixes + +* **cc:** add deprecation warning for Compare and Comply ([85c218a](https://github.com/watson-developer-cloud/node-sdk/commit/85c218a4d02a31534865bfde5ccede4fb113f00d)) +* **stt:** handedit- fix timestamps time to properly reflect response model ([735bcd2](https://github.com/watson-developer-cloud/node-sdk/commit/735bcd23bdd32657c5ea8e79ab9f9ff741e1d2a3)), closes [#1084](https://github.com/watson-developer-cloud/node-sdk/issues/1084) + +## [6.0.2](https://github.com/watson-developer-cloud/node-sdk/compare/v6.0.1...v6.0.2) (2021-01-08) + + +### Bug Fixes + +* **package.json:** update dependencies to cover vulnerabilities ([2b839c8](https://github.com/watson-developer-cloud/node-sdk/commit/2b839c8ac2a5ba7caf407edf03c5add2ca2ea348)) + +## [6.0.1](https://github.com/watson-developer-cloud/node-sdk/compare/v6.0.0...v6.0.1) (2020-12-22) + + +### Bug Fixes + +* kick off semantic release ([#1080](https://github.com/watson-developer-cloud/node-sdk/issues/1080)) ([dd178f3](https://github.com/watson-developer-cloud/node-sdk/commit/dd178f39e791ef198e7ed7c72c3821307784227b)) + +# [6.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.7.1...v6.0.0) (2020-12-11) + +### BREAKING CHANGES + +* Support for callbacks dropped +* Support for Node v10 dropped +* changes to services, see [MIGRATION-V6.md](https://github.com/watson-developer-cloud/node-sdk/blob/master/MIGRATION-V6.md) + + +## [5.7.1](https://github.com/watson-developer-cloud/node-sdk/compare/v5.7.0...v5.7.1) (2020-09-29) + + +### Bug Fixes + +* add `getTransactionId` method to the SynthesizeStream ([#1058](https://github.com/watson-developer-cloud/node-sdk/issues/1058)) ([21a5a7f](https://github.com/watson-developer-cloud/node-sdk/commit/21a5a7f2a1975d5ecc8ae1654f81d680585c39d9)) +* stop ignoring serviceUrl for Websocket methods ([#1060](https://github.com/watson-developer-cloud/node-sdk/issues/1060)) ([1901aae](https://github.com/watson-developer-cloud/node-sdk/commit/1901aae2f07e58c97ed26ed31906407581fb51c1)) + +# [5.7.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.6.2...v5.7.0) (2020-08-27) + + +### Bug Fixes + +* added test to `getDocumentStatus()` ([e5c81d5](https://github.com/watson-developer-cloud/node-sdk/commit/e5c81d5a7b64b28b3558040cbbdea02792fb82a2)) +* comments and necessary required params ([bef8089](https://github.com/watson-developer-cloud/node-sdk/commit/bef8089a7ebebc62917e63a151c10120e264d02c)) +* small changes ([f7a5e3c](https://github.com/watson-developer-cloud/node-sdk/commit/f7a5e3ccc371a19c1e4d179ac69ab416c86da89b)) +* visual reconition v4 ([b12f11e](https://github.com/watson-developer-cloud/node-sdk/commit/b12f11eb7e82c8418b7b377f60cbb3e17dfdf05f)) + + +### Features + +* **assistant-v2:** new method: `listLogs` ([ff6b79c](https://github.com/watson-developer-cloud/node-sdk/commit/ff6b79cd3259bd3930dd67672180a3f68f58f0f0)) +* **discovery-v2:** new methods: ([01d426c](https://github.com/watson-developer-cloud/node-sdk/commit/01d426c490891ef167529f62beebff7a1e776cce)) +* **discovery-v2-test:** added new tests for the new methods coming to ([82ea90f](https://github.com/watson-developer-cloud/node-sdk/commit/82ea90fe2f426a6179c74654559d9eab2cf59334)) +* **language-translator-v3:** new method: listLanguages ([b9a7d41](https://github.com/watson-developer-cloud/node-sdk/commit/b9a7d418aee14ea0779eaced0da2b60590e3f1b5)) +* **text-to-speech-v1:** new voices added ([be94a1a](https://github.com/watson-developer-cloud/node-sdk/commit/be94a1a4a87ffb2af7b8796b1528422bbfa115cc)) + +## [5.6.2](https://github.com/watson-developer-cloud/node-sdk/compare/v5.6.1...v5.6.2) (2020-08-06) + + +### Bug Fixes + +* support `disableSslVerification` when user provides https agent ([#1055](https://github.com/watson-developer-cloud/node-sdk/issues/1055)) ([4ab77e1](https://github.com/watson-developer-cloud/node-sdk/commit/4ab77e19fac2b900246be7e3650c9d2ed5d46aa6)) + +## [5.6.1](https://github.com/watson-developer-cloud/node-sdk/compare/v5.6.0...v5.6.1) (2020-07-24) + + +### Bug Fixes + +* update core version to 2.4.2 ([#1050](https://github.com/watson-developer-cloud/node-sdk/issues/1050)) ([24f2217](https://github.com/watson-developer-cloud/node-sdk/commit/24f22175549e373bb05dee719d7e49eadfc22bb5)) + +# [5.6.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.5.0...v5.6.0) (2020-06-03) + + +### Bug Fixes + +* update dependencies and examples ([#1036](https://github.com/watson-developer-cloud/node-sdk/issues/1036)) ([fde46cf](https://github.com/watson-developer-cloud/node-sdk/commit/fde46cf6c7dd2487b81a2fd19fb85691ba2bff5e)) + + +### Features + +* **assistant-v2:** new method: `messageStateless` ([0ccc5bf](https://github.com/watson-developer-cloud/node-sdk/commit/0ccc5bf9975c7c8637709422dadf3bf7f2f29d06)) +* **visual-recognition-v4:** new method: `getModelFile` ([55aec8c](https://github.com/watson-developer-cloud/node-sdk/commit/55aec8c77c7a24391329a68dd1be741f0fcc5fe2)) + +# [5.5.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.4.0...v5.5.0) (2020-04-24) + + +### Bug Fixes + +* **discovery-v1:** property `indexed` corrected to `available` for model `EnvironmentDocuments` ([7bc2ccd](https://github.com/watson-developer-cloud/node-sdk/commit/7bc2ccdb303f621068e964bf147672b0c8e0db8e)) + + +### Features + +* **assistant-v1:** `RuntimeEntityAlternative` model added ([9ad75d7](https://github.com/watson-developer-cloud/node-sdk/commit/9ad75d7cbc94a6f686d72dfe71a7ef6b2188fda9)) +* **assistant-v2:** `MessageContextSkillSystem` model added ([40fd822](https://github.com/watson-developer-cloud/node-sdk/commit/40fd822b668104ab11ba9e6711c7d6c85785c39e)) +* **speech-to-text-v1:** parameters `speechDetectorSensitivity`, `backgroundAudioSuppression`, added to `recognize` ([7c91ea2](https://github.com/watson-developer-cloud/node-sdk/commit/7c91ea2263e9a4c7a1ac47bae9dffefc06082692)) +* **text-to-speech-v1:** new voices and languages added ([dad6e0e](https://github.com/watson-developer-cloud/node-sdk/commit/dad6e0edcd86aeed5815809e7cb685734cb3deb7)) + +# [5.4.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.3.1...v5.4.0) (2020-02-13) + + +### Features + +* **assistant-v1:** `includeAudit` and `append` parameters added to a number of methods ([35fb2a5](https://github.com/watson-developer-cloud/node-sdk/commit/35fb2a5c9692c6e8a67f9de969269a8d37eb2ebb)) +* **visual-recognition-v4:** new methods added: `listObjectMetadata`, `updateObjectMetadata`, `getObjectMetadata`, `deleteObject` ([85281ae](https://github.com/watson-developer-cloud/node-sdk/commit/85281aeafaf39e92d7985ad588fcabb01d410c0a)) + +## [5.3.1](https://github.com/watson-developer-cloud/node-sdk/compare/v5.3.0...v5.3.1) (2020-01-29) + + +### Bug Fixes + +* **Natural Language Understanding v1:** Restore model field in CategoriesOptions ([93e7b69](https://github.com/watson-developer-cloud/node-sdk/commit/93e7b6946ae92bc0499097bdfb92153509b924a2)) + +# [5.3.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.2.1...v5.3.0) (2020-01-16) + + +### Features + +* **speech-to-text:** `endOfPhraseSilenceTime` and `splitTranscriptAtPhraseEnd` params added to `recognize`, `createJob`, and `recognizeUsingWebSocket` methods ([e3ff8db](https://github.com/watson-developer-cloud/node-sdk/commit/e3ff8db807456998d22bf42bbbc72cd271595c1c)) +* add `serviceName` parameter for all services ([964e9e1](https://github.com/watson-developer-cloud/node-sdk/commit/964e9e1aff17e292f2dc3207c524c2f6669e76e2)) + +## [5.2.1](https://github.com/watson-developer-cloud/node-sdk/compare/v5.2.0...v5.2.1) (2019-12-09) + + +### Bug Fixes + +* upgrade core version to 1.3.1 ([#1005](https://github.com/watson-developer-cloud/node-sdk/issues/1005)) ([239cdab](https://github.com/watson-developer-cloud/node-sdk/commit/239cdab)) + +# [5.2.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.1.0...v5.2.0) (2019-11-27) + + +### Features + +* add support for discovery v2 service ([c2a79ff](https://github.com/watson-developer-cloud/node-sdk/commit/c2a79ff)) +* **assistant-v1:** `webhooks` parameter added to `createWorkspace` and `updateWorkspace` ([c61b794](https://github.com/watson-developer-cloud/node-sdk/commit/c61b794)) +* **visual-recognition-v4:** new method added - `getTrainingUsage` ([0756878](https://github.com/watson-developer-cloud/node-sdk/commit/0756878)) + +# [5.1.0](https://github.com/watson-developer-cloud/node-sdk/compare/v5.0.0...v5.1.0) (2019-10-07) + + +### Features + +* **text-to-speech:** add method to repair wav header for a stream ([#981](https://github.com/watson-developer-cloud/node-sdk/issues/981)) ([42b0913](https://github.com/watson-developer-cloud/node-sdk/commit/42b0913)) + +# [5.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v4.5.1...v5.0.0) (2019-10-04) + + +### Bug Fixes + +* make RecognizeStream.readableObjectMode always return Boolean ([#943](https://github.com/watson-developer-cloud/node-sdk/issues/943)) ([a276df4](https://github.com/watson-developer-cloud/node-sdk/commit/a276df4)) + + +### Build System + +* drop support for Node versions 6 and 8 ([3ea1fd7](https://github.com/watson-developer-cloud/node-sdk/commit/3ea1fd7)) + + +### Code Refactoring + +* change all websocket method parameters to lower camel case ([#941](https://github.com/watson-developer-cloud/node-sdk/issues/941)) ([cb6711f](https://github.com/watson-developer-cloud/node-sdk/commit/cb6711f)) + + +### Features + +* add support for new authenticators in all sdks and add new service features for major release ([#946](https://github.com/watson-developer-cloud/node-sdk/issues/946)) ([3acffc5](https://github.com/watson-developer-cloud/node-sdk/commit/3acffc5)) + + +### BREAKING CHANGES + +* Passing individual credentials to the service constructor will no longer work. An Authenticator must be initialized and passed in. For more information, see the migration guide. +* All parameters have been converted to their lower camel case version. +* Support for the `token` parameter has been removed +* Support for the `customization_id` parameter has been removed +* Method `setAuthorizationHeaderToken` has been removed from the WebSocket Stream classes +* `RecognizeStream.readableObjectMode` will always be a Boolean value - before, it could have been `undefined`. +* This SDK may no longer work with applications running on Node 6 or 8. + +## [4.5.1](https://github.com/watson-developer-cloud/node-sdk/compare/v4.5.0...v4.5.1) (2019-09-19) + + +### Bug Fixes + +* pass user-defined http(s) agent to websocket methods ([#953](https://github.com/watson-developer-cloud/node-sdk/issues/953)) ([4f1679c](https://github.com/watson-developer-cloud/node-sdk/commit/4f1679c)) + +# [4.5.0](https://github.com/watson-developer-cloud/node-sdk/compare/v4.4.0...v4.5.0) (2019-09-19) + + +### Bug Fixes + +* ignore unecessary files for npm releases ([#962](https://github.com/watson-developer-cloud/node-sdk/issues/962)) ([93eb677](https://github.com/watson-developer-cloud/node-sdk/commit/93eb677)) + + +### Features + +* separate strings out of primary SynthesizeStream pipe ([#957](https://github.com/watson-developer-cloud/node-sdk/issues/957)) ([3014478](https://github.com/watson-developer-cloud/node-sdk/commit/3014478)) + +# [4.4.0](https://github.com/watson-developer-cloud/node-sdk/compare/v4.3.4...v4.4.0) (2019-08-20) + + +### Features + +* **compare-comply:** new model ContractCurrencies added ([#935](https://github.com/watson-developer-cloud/node-sdk/issues/935)) ([132ad09](https://github.com/watson-developer-cloud/node-sdk/commit/132ad09)) + +## [4.3.4](https://github.com/watson-developer-cloud/node-sdk/compare/v4.3.3...v4.3.4) (2019-08-13) + + +### Bug Fixes + +* disable analytics headers in browser to fix cors issues ([bdcf9d6](https://github.com/watson-developer-cloud/node-sdk/commit/bdcf9d6)) +* disable analytics headers in browser to fix cors issues ([#932](https://github.com/watson-developer-cloud/node-sdk/issues/932)) ([bba47a0](https://github.com/watson-developer-cloud/node-sdk/commit/bba47a0)) + +## [4.3.3](https://github.com/watson-developer-cloud/node-sdk/compare/v4.3.2...v4.3.3) (2019-08-08) + + +### Bug Fixes + +* send correct user-agent header for websocket methods ([#930](https://github.com/watson-developer-cloud/node-sdk/issues/930)) ([f24cac2](https://github.com/watson-developer-cloud/node-sdk/commit/f24cac2)) + +## [4.3.2](https://github.com/watson-developer-cloud/node-sdk/compare/v4.3.1...v4.3.2) (2019-08-07) + + +### Bug Fixes + +* **core:** share request config across all requests ([#928](https://github.com/watson-developer-cloud/node-sdk/issues/928)) ([7fd5577](https://github.com/watson-developer-cloud/node-sdk/commit/7fd5577)) + +## [4.3.1](https://github.com/watson-developer-cloud/node-sdk/compare/v4.3.0...v4.3.1) (2019-08-05) + + +### Bug Fixes + +* extend constructor options types to allow additional properties ([#925](https://github.com/watson-developer-cloud/node-sdk/issues/925)) ([03d241a](https://github.com/watson-developer-cloud/node-sdk/commit/03d241a)) + +# [4.3.0](https://github.com/watson-developer-cloud/node-sdk/compare/v4.2.6...v4.3.0) (2019-07-25) + + +### Bug Fixes + +* **compare-comply:** `contract_type` corrected to `contract_types` in model `ClassifyReturn` ([a114881](https://github.com/watson-developer-cloud/node-sdk/commit/a114881)) + + +### Features + +* **assistant-v2:** support for search skill added ([a1c4f6d](https://github.com/watson-developer-cloud/node-sdk/commit/a1c4f6d)) + +## [4.2.6](https://github.com/watson-developer-cloud/node-sdk/compare/v4.2.5...v4.2.6) (2019-07-23) + + +### Bug Fixes + +* properly store refreshed tokens in websocket libraries ([#920](https://github.com/watson-developer-cloud/node-sdk/issues/920)) ([4b8df28](https://github.com/watson-developer-cloud/node-sdk/commit/4b8df28)) + +## [4.2.5](https://github.com/watson-developer-cloud/node-sdk/compare/v4.2.4...v4.2.5) (2019-07-19) + + +### Bug Fixes + +* AuthorizationV1.Options requires type definitions for iam_a… ([#917](https://github.com/watson-developer-cloud/node-sdk/issues/917)) ([b38d692](https://github.com/watson-developer-cloud/node-sdk/commit/b38d692)) +* type definitions for iam_apikey and ibm_url ([13ac681](https://github.com/watson-developer-cloud/node-sdk/commit/13ac681)) + +## [4.2.4](https://github.com/watson-developer-cloud/node-sdk/compare/v4.2.3...v4.2.4) (2019-07-17) + + +### Bug Fixes + +* refresh iam tokens in websocket methods ([#913](https://github.com/watson-developer-cloud/node-sdk/issues/913)) ([5a2876a](https://github.com/watson-developer-cloud/node-sdk/commit/5a2876a)) + +## [4.2.3](https://github.com/watson-developer-cloud/node-sdk/compare/v4.2.2...v4.2.3) (2019-07-17) + + +### Bug Fixes + +* **speech-to-text:** support all allowed parameters in WebSocket method ([b91c1e2](https://github.com/watson-developer-cloud/node-sdk/commit/b91c1e2)) +* **speech-to-text:** support all allowed parameters in WebSocket… ([#915](https://github.com/watson-developer-cloud/node-sdk/issues/915)) ([e9ef5da](https://github.com/watson-developer-cloud/node-sdk/commit/e9ef5da)) + +## [4.2.2](https://github.com/watson-developer-cloud/node-sdk/compare/v4.2.1...v4.2.2) (2019-07-12) + + +### Bug Fixes + +* only set readableObjectMode in recognize-stream if not present ([#907](https://github.com/watson-developer-cloud/node-sdk/issues/907)) ([155c005](https://github.com/watson-developer-cloud/node-sdk/commit/155c005)) + +## [4.2.1](https://github.com/watson-developer-cloud/node-sdk/compare/v4.2.0...v4.2.1) (2019-06-14) + + +### Bug Fixes + +* remove ReadStream since ReadableStream is correct ([b9f8c73](https://github.com/watson-developer-cloud/node-sdk/commit/b9f8c73)) +* update second occurence of Map to Record ([3ded63a](https://github.com/watson-developer-cloud/node-sdk/commit/3ded63a)) +* use Record instead of Map type for classifier update ([6dec631](https://github.com/watson-developer-cloud/node-sdk/commit/6dec631)) + +# [4.2.0](https://github.com/watson-developer-cloud/node-sdk/compare/v4.1.3...v4.2.0) (2019-06-10) + + +### Bug Fixes + +* change Object types to custom `JsonObject` ([800afbe](https://github.com/watson-developer-cloud/node-sdk/commit/800afbe)) +* updates from ibm-cloud-sdk-core: ([dfabc7a](https://github.com/watson-developer-cloud/node-sdk/commit/dfabc7a)) + - expose the body in the detailed response under the field `result` + - add new token manager for ICP4D + - default request body size to Infinity + + +### Features + +* **language-translator:** the following methods have been added: `deleteDocument`, `getDocumentStatus`, `getTranslatedDocument`, `listDocuments`, `translateDocument` ([a0f2c20](https://github.com/watson-developer-cloud/node-sdk/commit/a0f2c20)) +* Add `processing_metrics`, `processing_metrics_interval` and `audio_metrics` as query params in WebSocket `recognize` ([5b09882](https://github.com/watson-developer-cloud/node-sdk/commit/5b09882)) + +## [4.1.3](https://github.com/watson-developer-cloud/node-sdk/compare/v4.1.2...v4.1.3) (2019-05-24) + + +### Bug Fixes + +* don't return request object in detailed response ([31628ff](https://github.com/watson-developer-cloud/node-sdk/commit/31628ff)) +* don't return request object in detailed response ([#891](https://github.com/watson-developer-cloud/node-sdk/issues/891)) ([9f9174c](https://github.com/watson-developer-cloud/node-sdk/commit/9f9174c)) + +## [4.1.2](https://github.com/watson-developer-cloud/node-sdk/compare/v4.1.1...v4.1.2) (2019-05-22) + + +### Bug Fixes + +* enable axios debug, disable gzip ([4e86717](https://github.com/watson-developer-cloud/node-sdk/commit/4e86717)) + +## [4.1.1](https://github.com/watson-developer-cloud/node-sdk/compare/v4.1.0...v4.1.1) (2019-05-13) + + +### Bug Fixes + +* do not read credentials file in browser ([718895c](https://github.com/watson-developer-cloud/node-sdk/commit/718895c)) + +# [4.1.0](https://github.com/watson-developer-cloud/node-sdk/compare/v4.0.2...v4.1.0) (2019-04-29) + + +### Features + +* **example:** add speech-to-text-to-redis example ([238cec3](https://github.com/watson-developer-cloud/node-sdk/commit/238cec3)) + +## [4.0.2](https://github.com/watson-developer-cloud/node-sdk/compare/v4.0.1...v4.0.2) (2019-04-24) + + +### Bug Fixes + +* update vulnerable dependencies ([26f7dce](https://github.com/watson-developer-cloud/node-sdk/commit/26f7dce)) + +## [4.0.1](https://github.com/watson-developer-cloud/node-sdk/compare/v4.0.0...v4.0.1) (2019-03-29) + + +### Bug Fixes + +* add compare comply keyword to package.json (to trigger release) ([7905445](https://github.com/watson-developer-cloud/node-sdk/commit/7905445)) + +# [4.0.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.18.4...v4.0.0) (2019-03-28) + + +### Bug Fixes + +* **icp:** disabling ssl verification now works for websocket connection ([f8466c8](https://github.com/watson-developer-cloud/node-sdk/commit/f8466c8)) +* update ibm-cloud-sdk-core to 0.1.1 ([29f87df](https://github.com/watson-developer-cloud/node-sdk/commit/29f87df)) + + +### Build System + +* remove support for node 4 ([1548413](https://github.com/watson-developer-cloud/node-sdk/commit/1548413)) + + +### chore + +* remove all code dealing with api_key in the base class ([92d48e2](https://github.com/watson-developer-cloud/node-sdk/commit/92d48e2)) +* **conversation:** remove conversation service and all associated code ([c810de2](https://github.com/watson-developer-cloud/node-sdk/commit/c810de2)) +* **dialog:** remove dialog service and all associated ([7d7408f](https://github.com/watson-developer-cloud/node-sdk/commit/7d7408f)) +* **language-translator-v2:** remove language translator v2 service and all associated code ([83d9232](https://github.com/watson-developer-cloud/node-sdk/commit/83d9232)) +* **personality-insights:** remove Personality Insights v2 ([e5e5302](https://github.com/watson-developer-cloud/node-sdk/commit/e5e5302)) + + +### Code Refactoring + +* **assistant-v1:** change name of variable `export` to `_export` ([91ed5a4](https://github.com/watson-developer-cloud/node-sdk/commit/91ed5a4)) +* **assistant-v2:** parameter names changed for v4 ([f6adbe9](https://github.com/watson-developer-cloud/node-sdk/commit/f6adbe9)) +* **compare-comply:** parameter names changed for v4 ([908d8e7](https://github.com/watson-developer-cloud/node-sdk/commit/908d8e7)) +* refactor core code to use `axios` instead of `request` for network requests ([f656731](https://github.com/watson-developer-cloud/node-sdk/commit/f656731)) +* **discovery:** remove compatibility layer for discovery ([8571a1f](https://github.com/watson-developer-cloud/node-sdk/commit/8571a1f)) +* **discovery:** rename model `QueryResultResultMetadata` to `QueryResultMetadata` ([b1a124c](https://github.com/watson-developer-cloud/node-sdk/commit/b1a124c)) +* **natural-language-classifier:** remove compatibility layer for natural language classifier ([0ac087c](https://github.com/watson-developer-cloud/node-sdk/commit/0ac087c)) +* **natural-language-understanding:** remove compatibility layer for natural language understanding ([359cc79](https://github.com/watson-developer-cloud/node-sdk/commit/359cc79)) +* **personality-insights-v3:** remove compatibility layer for personality insights v3 ([1b27685](https://github.com/watson-developer-cloud/node-sdk/commit/1b27685)) +* **speech-to-text:** remove compatibility layer for speech to text ([310bdd0](https://github.com/watson-developer-cloud/node-sdk/commit/310bdd0)) +* **text-to-speech:** remove compatibility layer for text to speech ([6994d3c](https://github.com/watson-developer-cloud/node-sdk/commit/6994d3c)) +* **tone-analyzer:** remove compatibility layer for tone analyzer ([9f10898](https://github.com/watson-developer-cloud/node-sdk/commit/9f10898)) +* **visual_recognition:** v4 changes ([3957e2d](https://github.com/watson-developer-cloud/node-sdk/commit/3957e2d)) +* in `query` and `federatedQuery`, only accept string values for certain parameters. ([06d7c65](https://github.com/watson-developer-cloud/node-sdk/commit/06d7c65)) +* in discovery, rename `getSourceCredentials` to `getCredentials` ([6fac701](https://github.com/watson-developer-cloud/node-sdk/commit/6fac701)) +* **visual-recognition:** remove compatibility layer for visual recognition ([6377067](https://github.com/watson-developer-cloud/node-sdk/commit/6377067)) +* remove index.ts file as it was deprecated starting in v3 ([4ea3c27](https://github.com/watson-developer-cloud/node-sdk/commit/4ea3c27)) +* remove module for converting training_data to csv ([dd534f6](https://github.com/watson-developer-cloud/node-sdk/commit/dd534f6)) +* require filenames for `createStopwordList` in discovery and `convertToHTML` in compare comply ([8f7c62f](https://github.com/watson-developer-cloud/node-sdk/commit/8f7c62f)) +* stop using cookies in requests ([09e0e91](https://github.com/watson-developer-cloud/node-sdk/commit/09e0e91)) + + +### Features + +* **discovery:** add new methods: `createTokenizationDictionary`, `deleteTokenizationDictionary`, and `getTokenizationDictionaryStatus` ([d5ba660](https://github.com/watson-developer-cloud/node-sdk/commit/d5ba660)) +* **discovery:** new parameters added to match updates to the service ([838b044](https://github.com/watson-developer-cloud/node-sdk/commit/838b044)) +* add `sort` query parameter to `getWorkspace()` ([1df75ac](https://github.com/watson-developer-cloud/node-sdk/commit/1df75ac)) +* add model `MessageContextSkill` ([15a4c7f](https://github.com/watson-developer-cloud/node-sdk/commit/15a4c7f)) +* new error formatter, provides the same information regardless of service ([c324ab0](https://github.com/watson-developer-cloud/node-sdk/commit/c324ab0)) +* The SDK now returns a Promise for all methods if a callback is not specified. Callbacks can still be used for backwards compatibility. ([fd6e20b](https://github.com/watson-developer-cloud/node-sdk/commit/fd6e20b)) + + +### BREAKING CHANGES + +* **visual_recognition:** For `updateClassifier` and `createClassifier`, the parameter `{classname}_positive_examples` is changed to a map called `positive_examples` with classnames as keys. + * See the migration guide, UPGRADE-4.0.md, for more information. + +* Node 4 will no longer be supported, considered during development, or tested with. + * To migrate your code, upgrade to a newer major version of Node. + +* **assistant-v2:** For `updateValue`, parameter `new_type` is changed to `new_value_type`. For `updateDialogNode`, parameter `new_type` is changed to `new_node_type`. + * These method renames are breaking changes. Update the method names to migrate your code. + +* There is no more `index.ts` file, so importing with `require('watson-developer-cloud')` will no longer work. + * To migrate your code, import only the services that you need, e.g. `require('watson-developer-cloud/speech-to-text/v1')`. + +* The methods `createStopwordList` in discovery and `convertToHTML` in comply comply now have new, required parameters + * To migrate your code, include the parameter `stopword_filename` for `createStopwordList`, and `filename` for `convertToHTML` + +* **assistant-v1:** The Assistant v1 parameter `export` is now `_export` is all instances. + * To migrate your code, change any use of the `export` parameter to `_export`. + +* The SDK used to document and allow array values for these parameters, converting them to strings to be sent to the service. + * To migrate your code, convert any array values for these parameters to comma-separated values in a string. + +* The module `json-training-to-csv` is no longer available. + * To migrate your code, provide `training_data` to NLC as a CSV file. + +* Cookies will no longer be sent or stored in requests. This should have very little impact on usage but is techincally a breaking change. + * This affects internal functionality but has no effect on client code. + +* Errors objects returned from service errors are now different + * To migrate your code, see the upgrade guide for the new error structure + +* Network responses received in callback function may now have different structures (results and errors). Requests no longer return a Stream. + * See the UPGRADE-4.0.md file for more information. + +* **personality-insights:** Personality Insights v2 is no longer available in the SDK + * To migrate your code, use Personality Insights v3: + +* **compare-comply:** Parameter `model_id` has been changed to `model` for the following methods: convertToHtml, classifyElements, extractTables, compareDocuments, deleteFeedback, getFeedback, createBatch, and updateBatch + +* **speech-to-text:** Deprecated methods in Speech to Text are no longer available. Changed parameter names are no longer interally corrected. + * To migrate your code, use the methods and parameters currently available with the service as documented here: https://www.ibm.com/watson/developercloud/speech-to-text/api/v1/node.html?node + +* **text-to-speech:** Deprecated methods in Text to Speech are no longer available. Changed parameter names are no longer interally corrected. + * To migrate your code, use the methods and parameters currently available with the service as documented here: https://www.ibm.com/watson/developercloud/text-to-speech/api/v1/node.html?node + +* **visual-recognition:** Deprecated methods in Visual Recognition are no longer available. Changed parameter names are no longer interally corrected. + * To migrate your code, use the methods and parameters currently available with the service as documented here: https://www.ibm.com/watson/developercloud/visual-recognition/api/v3/node.html?node + +* **tone-analyzer:** Deprecated methods in Tone Analyzer are no longer available. Changed parameter names are no longer interally corrected. + * To migrate your code, use the methods and parameters currently available with the service as documented here: https://www.ibm.com/watson/developercloud/tone-analyzer/api/v3/node.html?node + +* **personality-insights-v3:** Deprecated methods in Personality Insights v3 are no longer available. Changed parameter names are no longer interally corrected. + * To migrate your code, use the methods and parameters currently available with the service as documented here: https://www.ibm.com/watson/developercloud/personality-insights/api/v3/node.html?node + +* **natural-language-understanding:** The `version_date` parameter in Natural Language Understanding is no longer supported. + * To migrate your code, use the parameter name `version` instead. + +* **natural-language-classifier:** Deprecated methods in Natural Language Classifier are no longer available. Changed parameter names are no longer interally corrected. + * To migrate your code, use the methods and parameters currently available with the service as documented here: https://www.ibm.com/watson/developercloud/natural-language-classifier/api/v1/node.html?node + +* **discovery:** Deprecated methods in Discovery are no longer available. Changed parameter names are no longer interally corrected. + * To migrate your code, use the methods and parameters currently available with the service as documented here: https://www.ibm.com/watson/developercloud/discovery/api/v1/node.html?node + +* **conversation:** The Conversation service will no longer be available + * To migrate your code, use the Assistant v1 or v2 service. + +* **language-translator-v2:** The Language Translator V2 service will no longer be available + * To migrate your code, use the Language Translator V3 service. + +* **dialog:** The Dialog service will no longer be available + * To migrate your code, use the Assistant v1 or v2 service. + +* Support for the `api_key` parameter has been removed. + * For instances of Visual Recognition, use `iam_apikey` to authenticate. + +* **discovery:** The name of the model `QueryResultResultMetadata` has been changed to `QueryResultMetadata` + * To migrate your code, use the model `QueryResultMetadata` instead of `QueryResultResultMetadata`: + +## [3.18.4](https://github.com/watson-developer-cloud/node-sdk/compare/v3.18.3...v3.18.4) (2019-03-28) + + +### Bug Fixes + +* allow users to use `iam_apikey` when authenticating for icp ([cdccbc1](https://github.com/watson-developer-cloud/node-sdk/commit/cdccbc1)) + +## [3.18.3](https://github.com/watson-developer-cloud/node-sdk/compare/v3.18.2...v3.18.3) (2019-03-19) + + +### Bug Fixes + +* expose token manager from core code as a module ([4376e7c](https://github.com/watson-developer-cloud/node-sdk/commit/4376e7c)) + +## [3.18.2](https://github.com/watson-developer-cloud/node-sdk/compare/v3.18.1...v3.18.2) (2019-03-15) + + +### Bug Fixes + +* make `access_token` an allowable query parameter in recognize / synthesize streams ([a2ad09e](https://github.com/watson-developer-cloud/node-sdk/commit/a2ad09e)) + +## [3.18.1](https://github.com/watson-developer-cloud/node-sdk/compare/v3.18.0...v3.18.1) (2019-02-14) + + +### Bug Fixes + +* use dotenv v5 to maintain node 4.x compatibility ([c311651](https://github.com/watson-developer-cloud/node-sdk/commit/c311651)) + +# [3.18.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.17.0...v3.18.0) (2019-02-06) + + +### Features + +* **compare-comply:** new constants and new model properties added ([d9dc7cc](https://github.com/watson-developer-cloud/node-sdk/commit/d9dc7cc)) +* **discovery:** add method `getStopwordListStatus` ([ea9eaf9](https://github.com/watson-developer-cloud/node-sdk/commit/ea9eaf9)) +* **speech-to-text:** optional parameter `force` added to the method `upgradeAcousticModel` ([ceaa843](https://github.com/watson-developer-cloud/node-sdk/commit/ceaa843)) + +# [3.17.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.16.1...v3.17.0) (2019-02-04) + + +### Features + +* enable reading credentials from ibm-credentials.env file ([ce02aa8](https://github.com/watson-developer-cloud/node-sdk/commit/ce02aa8)) + +## [3.16.1](https://github.com/watson-developer-cloud/node-sdk/compare/v3.16.0...v3.16.1) (2019-01-19) + + +### Bug Fixes + +* fix `getTransactionId` method for the `RecognizeStream` class ([e5bbe2c](https://github.com/watson-developer-cloud/node-sdk/commit/e5bbe2c)) + +# [3.16.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.15.4...v3.16.0) (2019-01-17) + + +### Features + +* **discovery:** add methods `createStopwordList`, `deleteStopwordList`, `createGateway`, `deleteGateway`, `getGateway`, and `listGateways` ([8a6753e](https://github.com/watson-developer-cloud/node-sdk/commit/8a6753e)) +* **speech-to-text:** new methods added: addGrammar, deleteGrammar, getGrammar, listGrammars ([7ab567a](https://github.com/watson-developer-cloud/node-sdk/commit/7ab567a)) +* **visual-recognition:** parameter `accept_language` added to method `detectFaces` ([82190c7](https://github.com/watson-developer-cloud/node-sdk/commit/82190c7)) + +## [3.15.4](https://github.com/watson-developer-cloud/node-sdk/compare/v3.15.3...v3.15.4) (2019-01-15) + + +### Bug Fixes + +* fix bug that prevents `audio` from being sent as a buffer for `recognize` ([3f97b80](https://github.com/watson-developer-cloud/node-sdk/commit/3f97b80)) + +## [3.15.3](https://github.com/watson-developer-cloud/node-sdk/compare/v3.15.2...v3.15.3) (2019-01-15) + + +### Bug Fixes + +* package.json to reduce vulnerabilities ([e61d1de](https://github.com/watson-developer-cloud/node-sdk/commit/e61d1de)) + +## [3.15.2](https://github.com/watson-developer-cloud/node-sdk/compare/v3.15.1...v3.15.2) (2019-01-14) + + +### Bug Fixes + +* query parameters no longer cause text-to-speech over websockets to crash ([775e6d2](https://github.com/watson-developer-cloud/node-sdk/commit/775e6d2)) +* Remove the `disabled` property from `CreateDialogNode`. It is for internal use only. ([4b72d0e](https://github.com/watson-developer-cloud/node-sdk/commit/4b72d0e)) + +## [3.15.1](https://github.com/watson-developer-cloud/node-sdk/compare/v3.15.0...v3.15.1) (2019-01-07) + + +### Bug Fixes + +* add `disabled` property to CreateDialogNode ([41cd8dc](https://github.com/watson-developer-cloud/node-sdk/commit/41cd8dc)) +* add `user_defined` property to MessageOutput model ([ea28bf3](https://github.com/watson-developer-cloud/node-sdk/commit/ea28bf3)) + +# [3.15.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.14.0...v3.15.0) (2018-12-07) + + +### Features + +* add support for Compare and Comply service ([fa22ae5](https://github.com/watson-developer-cloud/node-sdk/commit/fa22ae5)) +* **discovery:** adds new model, RetrievalDetails ([1821719](https://github.com/watson-developer-cloud/node-sdk/commit/1821719)) +* **natural-language-understanding:** new properties added to models to match the service ([3bf1e5e](https://github.com/watson-developer-cloud/node-sdk/commit/3bf1e5e)) + +# [3.14.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.13.1...v3.14.0) (2018-12-06) + + +### Features + +* **text-to-speech:** add support for using `synthesize` over a websocket connection ([94ba896](https://github.com/watson-developer-cloud/node-sdk/commit/94ba896)) + +## [3.13.1](https://github.com/watson-developer-cloud/node-sdk/compare/v3.13.0...v3.13.1) (2018-11-26) + + +### Bug Fixes + +* **discovery:** update mis-defined parameters to match the service ([d1fb9a9](https://github.com/watson-developer-cloud/node-sdk/commit/d1fb9a9)) +* **speech-to-text:** `content_type` is no longer a required parameter for `recognize()` or `createJob()` (it is now optional) ([d64c06a](https://github.com/watson-developer-cloud/node-sdk/commit/d64c06a)) +* **speech-to-text:** add support for `language_customization_id` parameter to the WebSockets method, deprecate `customization_id` ([bf2cd68](https://github.com/watson-developer-cloud/node-sdk/commit/bf2cd68)) + +# [3.13.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.12.0...v3.13.0) (2018-10-30) + + +### Features + +* **discovery:** add new methods: `createTokenizationDictionary`, `deleteTokenizationDictionary`, and `getTokenizationDictionaryStatus` ([d5ba660](https://github.com/watson-developer-cloud/node-sdk/commit/d5ba660)) + +# [3.12.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.11.1...v3.12.0) (2018-10-10) + + +### Features + +* **discovery:** new parameters added to match updates to the service ([838b044](https://github.com/watson-developer-cloud/node-sdk/commit/838b044)) + +## [3.11.1](https://github.com/watson-developer-cloud/node-sdk/compare/v3.11.0...v3.11.1) (2018-09-28) + + +### Bug Fixes + +* **icp:** disabling ssl verification now works for websocket connection ([f8466c8](https://github.com/watson-developer-cloud/node-sdk/commit/f8466c8)) + +# [3.11.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.10.0...v3.11.0) (2018-09-24) + + +### Features + +* add support for assistant v2 ([8a99676](https://github.com/watson-developer-cloud/node-sdk/commit/8a99676)) + +# [3.10.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.9.1...v3.10.0) (2018-09-13) + + +### Features + +* new languages models supported for speech to text ([a2669dd](https://github.com/watson-developer-cloud/node-sdk/commit/a2669dd)) +* support authenticating with ibm cloud private ([0d1774c](https://github.com/watson-developer-cloud/node-sdk/commit/0d1774c)) + +## [3.9.1](https://github.com/watson-developer-cloud/node-sdk/compare/v3.9.0...v3.9.1) (2018-08-30) + + +### Bug Fixes + +* add an optional filename parameter for methods accepting a file ([9a6cb59](https://github.com/watson-developer-cloud/node-sdk/commit/9a6cb59)) + +# [3.9.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.8.0...v3.9.0) (2018-08-15) + + +### Features + +* **regenerate:** add methods for new discovery metrics endpoints ([f396eca](https://github.com/watson-developer-cloud/node-sdk/commit/f396eca)) + +# [3.8.0](https://github.com/watson-developer-cloud/node-sdk/compare/v3.7.1...v3.8.0) (2018-08-07) + + +### Features + +* regenerate service sdks 7/30/18 ([0f95a92](https://github.com/watson-developer-cloud/node-sdk/commit/0f95a92)) + +## Version 3.7.0 +7/12/18 +* Operations added for `Credentials` resource (Discovery) + +## Version 3.6.0 +7/11/18 +* Support base_model_version parameter in `recognize()` (Speech-to-Text) +* Authentication service now supports returning IAM tokens + +## Version 3.5.1 +6/25/18 +* Fixes bug retrieving Assistant credentials from VCAP services +* Fixes bug that prevented IAM authentication with Speech to Text websockets + +## Version 3.5.0 +6/12/18 +* Support for Language Translator V3 + +## Version 3.4.5 +6/4/18 +* Fixes bug for Visual Recognition service that caused authentication errors when reading credentials from VCAP Services or environment files + +## Version 3.4.3 +5/31/18 +* Fixes bug for Visual Recognition service that gave the incorrect URL for CF instances. Old service instances no longer have to specify the URL +* General IAM authentication URL changed from https://iam.ng.bluemix.net/identity/token to https://iam.bluemix.net/identity/token +* `deleteUserData()` methods in Speech to Text, Text to Speech, Visual Recognition + +## Version 3.4.2 +5/18/18 +* Updates dependencies to remove security vulnerability +* Adds methods `deleteUserData` to Assistant, Conversation, and Discovery + +## Version 3.4.1 +5/3/18 +* Updates dependencies to be compatible with Node v10 + +## Version 3.4.0 +4/26/18 +* Support for custom headers https://github.com/watson-developer-cloud/node-sdk#sending-request-headers + +* Support for retrieving HTTP response https://github.com/watson-developer-cloud/node-sdk#sending-request-headers + +* Support for IAM tokens, which will be supported by services in future releases. + +## Version 3.3.0 +4/5/18 +* Visual Recognition + * New method `getCoreMlModel` adds support for CoreML + * Breaking: `detectFaces` no longer supports identity information in the response. + * `name`, `score`, `type_hierarchy` removed from response [Release notes](https://cloud.ibm.com/docs/visual-recognition?topic=visual-recognition-release-notes#2april2018) + +* Natural Language Classifier + * New method 'classifyCollection` + +Conversation/Assistant + * timestamp parameters `created` and `updated` are optional, not required + * `context` parameter is optional in `message` + + + + +## Version 3.2.1 +3/15/18 +* Renames Assistant from v1-generated to v1 + +## Version 3.2.0 +3/15/18 +* Adds Assistant Service (Conversation has been renamed to Assistant) + +## Version 3.1.1 +3/8/18 +* Adds warnings to methods with changed names +* Ensures that new parameters are passed into methods when calling them using the older format used in the adapters. + +## Version 3.1.0 +3/7/18 + +### **Breaking changes:** + +Speech to text +- param `audio` is now required in recognize method +- methods `createSession`, `deleteSession`, `getSessionStatus` deprecated + +### **Non Breaking:** + +- All code is regenerated to reflect the newest versions of all services +- Methods with exclusively text/plain body parameters now are correctly generated +- Fixes linting in build + - Adds new linter, tslint for typescript files + +SpeechToText: +- `addAudio` method: param `audio_resource` is now type ReadableStream|FileObject|Buffer instead of ByteArray[] +- `transfer-encoding` is removed from `recognize` method + +Conversation +- `include_audit` parameters are now supported +- `node_visited_details` is now supported + +Tone Analyzer +- Adds support for `content_language` for `tone_chat` endpoint + +Visual Recognition +- Items in ‘parameters’ are now top level params + +## [v3.0.7](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v3.0.7) + * services use `version` instead of `version_date` and should pass in dates directly such as `'2017-02-27'` instead of calling date constants. + +## [v3.0.6](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v3.0.6) + * All .ts files are removed from the npm package + * Fixes issue of enforcing our typescript compiler settings when other typescript projects use our package + * All instances of ReadableStream changed to NodeJs.ReadableStream, blob type added to /lib/, both changes done to correctly link these types for typescript users + +## [v3.0.5](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v3.0.5) + * [User-Agent] in header is no longer overwritten but instead appended, this change only affects metrics of this SDK + +## [v3.0.4](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v3.0.4) + * Fixed bug in visual recognition to correctly use owners parameter + * Fixed bug in NLU where environment variables storing credentials were not read when running locally + * Dependencies updated to fix security vulnerabilities + +## [v3.0.3](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v3.0.3) + +* Added support for customization_weight or acoustic_customization_id in speech-to-text/v1 + + +## Version 3.0 + +_2017-11-29_ + +_This version contains several breaking changes._ + +Version 3.0 introduces automatically generated client code. The client code is generated from [Swagger](https://swagger.io/). Several deprecated services have been removed from this release. Furthermore, language has been changed from *NodeJS* to *TypeScript*, and file extensions have been changed from `*.js` to `*.ts` + +Services that are **not affected** in this release: + + * Authorization + * Dialog + +Services that are **affected** in this release: + + * Conversation + * Discovery + * Language Translator + * Natural Language Classifier + * Natural Language Understanding + * Personality Insights + * Text to Speech + * Tone Analyzer + * Speech to Text + * Visual Recognition + +Services that are **removed** in this release: + + * Alchemy Language + * Alchemy Data News + * Document Conversion + * Retrieve and Rank + * Tradeoff Analytics + +Upon upgrading the SDK, follow the migration guide [here](https://github.com/watson-developer-cloud/node-sdk/wiki/Migration-Guide). + +## [v2.39.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.39.0) +* Added support for `highlight` param in `DiscoveryV1.query()` + +## [v2.38.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.38.0) +* DiscoveryV1.VERSION_DATE_2017_08_01 = '2017-08-01'; + +## [v2.37.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.37.0) +* `ToneAnalyzerV3.tone()` now accepts `language` parameter to specify `content-language` header for input. + +### [v2.36.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.36.1) +* Improved formatting of Alchemy Language error messages + +## [v2.36.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.36.0) +* Added `ConversationV1.VERSION_DATE_2017_05_26` + +## [v2.35.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.35.0) +* Added `DiscoveryV1.updateJsonDocument` to compliment`addJsonDocument()` + +## [v2.34.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.34.0) +* Added `DiscoveryV1.addJsonDocument()` method to make uploading in-memory JSON structures easier +* Fixed bug in `DiscoveryV1.addDocument()` that prevented setting custom filenames [#474](https://github.com/watson-developer-cloud/node-sdk/issues/474) + +## [v2.33.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.33.0) +* Added support for `fuzzy_match` param in Conversation entities methods +* Added support for JSON metadata when adding documents to Discovery [#474](https://github.com/watson-developer-cloud/node-sdk/issues/474) + +### [v2.32.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.32.1) +* Discovery: fix createEnv with size 0 + +## [v2.32.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.32.0) +* Add natural_language_query and passages parameters to Discovery.query() +* Fix collection name param for Discovery.createCollection ([#https://github.com/watson-developer-cloud/node-sdk/issues/457](https://github.com/watson-developer-cloud/node-sdk/issues/457)) + +### [v2.31.2](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.30.1) +* Bumped `solr-client` dependency to latest version + +### [v2.31.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.30.1) +* Added VisualRecognitionV3.VERSION_DATE_2016_05_20 constant + +## [v2.31.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.31.0) +* Added support for sort param on DiscoveryV1.query() ([#446](https://github.com/watson-developer-cloud/node-sdk/pull/446)) +* Added DiscoveryV1.VERSION_DATE_2017_04_27 +* Made utterances a top-level param for ToneAnalyzerV3.tone_chat() ([#439](https://github.com/watson-developer-cloud/node-sdk/pull/439)) + +## [v2.30.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.30.0) +* Added support for Conversation entities (w/ values and synonyms) and logs +* Added support for updating Discovery environments + +## [v2.29.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.29.0) +* Added tone_chat endpoint for Tone Analyzer +* Added support for WebM and Ogg/Vorbis formats to Speech to Text + +### [v2.28.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.28.1) +* Fixed Visual Recognition credentials in dedicated environments ([#436](https://github.com/watson-developer-cloud/node-sdk/issues/426)) + +## [v2.28.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.28.0) +* bumped vcap_services library version +* Fixed bug with STT async recognition & multiple callback events +* Moved changelog to wiki + +### [v2.27.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.27.1) +* Fixed issue when creating STT Async recognize job with multiple callback events ([#415](https://github.com/watson-developer-cloud/node-sdk/issues/415)) + +## [v2.27.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.27.0) +* Add support for Conversation Counter Examples API + +### [v2.26.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.26.1) +* Correct name of `events` parameter in STT async recognize. + +## [v2.26.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.26.0) +* Conversation sorting and pagination for workspaces, intents, and examples + +### [v2.25.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.25.1) +* Natural Language Understanding: fixed credentials pulling from bluemix + +## [v2.25.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.25.0) +* Natural Language Understanding: new version_date and addition of listModels() and deleteModel() methods + +### [v2.24.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.24.1) +* STT RecognizeStream now exposes Transaction ID + +### [v2.23.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.23.1) +* Restored support for Node.js 4.0-4.4 + +## [v2.23.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.23.0) +* Added support for Conversation intents and examples + +### [v2.22.2](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.22.2) +* Speech to Text createRecognitionJob() now accepts all params from .recognize() +* Speech to Text getRecognitionJobs() accepts an optional params object in order to match the signature of the rest of the API + +### [v2.22.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.22.1) +* Make callback_url optional for Speech to Text createRecognitionJob() + +## [v2.22.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.22.0) +* Speech to Text Asychronous API support + +## [v2.21.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.21.0) +* Added support for sort paramater in SpeechToTextV1.getWords() +* Added updateDocument() method to DiscoveryV1 +* Fixed up internal code to avoid using the deprecated `new Buffer(...)` API +* Improved documentation + +## [v2.20.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.20.0) +* Conversation VersionDate 2017-02-03 + +## [v2.19.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.19.0) +* Added support for find_preferable_options flag in Tradeoff Analytics + +## [v2.18.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.18.0) +* Added various methods to Conversation service to create and manage workspaces +* Prevent docs site files from being included in npm releases + +### [v2.17.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.17.1) +* Fixed bug in STT getWords method (#390) + +## [v2.17.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.17.0) +* No API changes, but significant internal changes. Should behave exactly the same, but releasing as a standalone version out of caution. + +## [v2.16.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.16.0) +* Added NaturalLanguageUnderstandingV1 +* Added support for pulling SERVICE_NAME_URL from enviroment properties along with username and password (or api key) + +### [v2.15.5](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.15.5) +* stt.whenCustomizationReady() no longer incorrectly requires that a corpus be added. (#382) +* various JSDoc corrections + +### [v2.15.2](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.15.2) +* Fix slightly-incorrect URL in Language Translator V2 example and error message + +## [v2.15.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.15.0) +* SDK now emits missing parameter errors on returned stream if no callback is supplied (#368 / #377) + +### [v2.14.8](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.8) +* Fix DocumentConversion#convert() to accept config params as documented in api ref +* Fix param checking on various TTS customization methods + +### [v2.14.6](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.6) +* Fix incorrect error messages (#373) + +### [v2.14.5](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.5) +* Fix issue where adding a document as buffer/string fails in Discovery v1 (#370) +* Fix issue where STT RecognizeStream could fail to emit speaker_labels event in rare circumstances + +### [v2.14.4](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.4) +* Update jsdoc for Speech to text + +### [v2.14.3](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.3) +* Expose discovery v1 in index + +### [v2.14.2](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.2) +* Same fix for language translation + +### [v2.14.7](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.7) +* Fixed DocumentConversionV1.convert() to accept config params as a seperate object, matching api ref documentation (#375) + +### [v2.14.6](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.6) +* Fix regression in error handler that would incorrectly overwrite error message in some cases + +### [v2.14.5](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.5) +* Fix isue where STT RecognizeStream could fail to emit a speaker_labels events in certain rare circumstances +* Added Discovery add createEnvironment and deleteEnvironment methods +* Fix Discovery addDocument when adding a Buffer + +### [v2.14.4](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.4) +* Update JSDOc for speech to Text + +### [v2.14.3](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.3) +* Expose discovery v1 in index.js + +### [v2.14.2](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.2) +* Fix content type for language translation (#362) + +### [v2.14.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.1) +* Fix content type for language translator (#362) + +## [v2.14.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.14.0) +* Added Discovery V1 (general availability release) + +## [v2.13.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.13.0) +* Added STT whenCorporaAnalyzed() helper, #353 +* Bumped dependencies + +## [v2.12.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.12.0) +* Added Speech to Text speaker_labels support, added new speaker_labels event to RecognizeStream + +### [v2.11.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.11.1) +* Fixed main file path in package.json +* added a conversation example + +## [v2.11.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.11.0) +* Added several methods and a version_date constant to DiscoveryV1Experimental + +### [v2.10.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.10.1) +* Added version_date constants to ConversationV1, updated docs, examples, etc to latest version_date. + +### [v2.9.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.9.1) +* Added customization_id support to STT RecognizeStream + +## [v2.9.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.9.0) +* Allow VisualRecognitionV3.classify() to accept Buffers (with automatic content-type detection) or Objects with specified filename or content-type +* Improve Visual Recognition error formatting +* Document Conversion: Remove forced utf-8 charset header for html files + +### [v2.8.3](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.8.3) +* Fixed issue with formatting multiple keywords for STT recognize() - #261 + +### [v2.8.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.8.1) +* Added `getCredentials()` method to base service, primarily for use with AuthorizationV1() + +### [v2.7.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.7.1) +* dependency fix + +## [v2.7.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.7.0) +* Speech to Text customization support + +### [v2.6.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.6.1) +* Ensure errors are always instanceof Error +* Doc improvements + +## [v2.6.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.6.0) +* Added support for Personality Insights V3 + +## [v2.5.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.5.0) +* Split LanguageTranslationV2 into a seperate service from LanguageTranslatorV2, added a warning when translator service is used without specifying a url since the default is currently incorrect. +* Fixed bug with setting user-agent header + +### [v2.4.7](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.4.7) +* Fixed issue with send data on non-open WebSockets for STT RecognizeStream - see #322 + +### [v2.4.6](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.4.6) +* Fixed credential bugs in R&R and STT + +### [v2.4.5](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.4.5) +* Fixed bug where credentials could be lost when calling certain methods in Language Translator and Dialog services + +### [v2.4.4](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.4.4) +* Doc-only changes, focused on Language Translation/Translator differences and temporary workaround + +### [v2.4.3](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.4.3) +* Fix issue with automatically loading Alchemy* credentials from the Bluemix environment + +### [v2.4.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.4.1) +* Revert part of credential change: Alchemy* services again use `apikey` while visual recognition uses `api_key` + (Most endpoints accept either, but this split follows the documented API for each service.) + +## [v2.4.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.4.0) +* Added support for Visual Recognition similarity search beta +* Refactored handling of credentials to support constraints in similarity search + +## [v2.3.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.3.0) +* Add support for RetrieveAndRankV1.rank() answers param + +## [v2.2.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.2.0) +* Added support for creating and managing TTS Customizations + +### [v2.1.3](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.1.3) +* Deprecation warning for Dialog +* Added TTS .voice() and .pronunciation() methods +* Added support for `customization_id` to existing TTS methods +* Typo and JSDoc fixes +* Fixed bug with pulling api key from env properties for alchemy services + +### [v2.1.2](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.1.2) +* Added profanity_filter support to STT RecognizeStream + +### [v2.1.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.1.1) +* Corrected some examples to use - instead of _ +* Renamed NLC folder to use - instead of _ + +## [v2.1.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.1.0) +* Updated AlchemyLanguageV1.emotion() to support new targeted_emotion parameter & endpoint +* Added Conversation/Tone Analyzer integration example +* Updated Readme & Examples to use newer constructor style + +### [v2.0.3](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.0.3) +* Use actual Error instances for errors (#298) + +### [v2.0.2](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.0.2) + +* Added support for the `intents`, `entities` and `output` parameters in ConveersationV1.message() +* Removed sunset services: Concept Insights and Relationship Extraction +* Dependency bump + + +### [v2.0.1](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.0.1) + +* Added VisualRecognitionV3.retrainClassifier() to facilitate updating of existing custom classifiers +* Added support for `alternate_intents` parameter in ConversationV1.message() + + +# [v2.0.0](https://github.com/watson-developer-cloud/node-sdk/releases/tag/v2.0.0) + +* Breaking: prefer programatic (user-supplied) credentials over bluemix-provided ones (VCAP_SERVICES) +* New preferred method of instantiating services: `new watson.PersonalityInsightsV2({/*...*/});` instead of `watson.personality_insights({/*...*/});`. Older method still works +* Restructured code to support client-side usage via tools such as Browserify and Webpack. Most services support CORS; this will be documented and the remaining service teams will be nagged. +* Added a changelog to capture both major breaking changes and smaller + + +# Breaking Changes for v1.0 + +Several breaking changes were introduced with the v1.0.0 release: + + * Experimental and Beta services now require the appropriate tag to be added to their version: + * Concept Expansion `v1` is now `v1-beta` + * Question and Answer `v1` is now `v1-beta` + * Relationship Extraction `v1` is now `v1-beta` + * Tone Analyzer `v3` is now `v3` (latest) or `v3-beta` (compatibility with old Beta plan) + * Visual Insights `v1` is now `v1-experimental` + * Visual Recognition `v1` is now `v1-beta` + * Speech to Text gained a new `createRecognizeStream()` method replacing the existing live streaming methods with a simpler Read/Write stream. + The older methods are still available in v1.0 but each log a deprecation warning (unless `{silent: true}` is passed in) and will be removed from a future release. + The affected methods are: + * `recognizeLive()` + * `observeResult()` + * `getRecognizeStatus()` + * The Document Conversion API has been reduced to a single `convert()` method; it no longer offers batch conversion or cloud storage of files. + * Several deprecated services have been removed: + * Message Resonance + * Tone Analyzer v1 and v2 (replaced by v3) + * Search (replaced by Retrieve and Rank) + * Dropped support for node.js v0.10.x (For reference: the WDC Node.js SDK now officially support the latest 0.12, LTS, and Stable releases of Node.js.) diff --git a/README.md b/README.md index c9d74d8085..c63d4b83de 100755 --- a/README.md +++ b/README.md @@ -1,548 +1,583 @@ -Watson Developer Cloud Node.js SDK -============================================ -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/460c1d01a56942dbb7dd15d9ee0da535)](https://www.codacy.com/app/gattana/node-sdk?utm_source=github.com&utm_medium=referral&utm_content=watson-developer-cloud/node-sdk&utm_campaign=Badge_Grade) -[![Build Status](https://secure.travis-ci.org/watson-developer-cloud/node-sdk.svg)](http://travis-ci.org/watson-developer-cloud/node-sdk) -[![Dependency Status](https://gemnasium.com/watson-developer-cloud/node-sdk.svg)](https://gemnasium.com/watson-developer-cloud/node-sdk) -[![npm-version](https://img.shields.io/npm/v/watson-developer-cloud.svg)](https://www.npmjs.com/package/watson-developer-cloud) -[![npm-downloads](https://img.shields.io/npm/dm/watson-developer-cloud.svg)](https://www.npmjs.com/package/watson-developer-cloud) - -Node.js client library to use the Watson Developer Cloud services, a collection of APIs that use cognitive computing to solve complex problems. - -## Table of Contents - * [Major Changes for v2](#major-changes-for-v2) - * [Installation](#installation) - * [Usage](#usage) - * [Documentation](#documentation) - * [Getting the Service Credentials](#getting-the-service-credentials) - * [Questions](#questions) - * [Examples](#examples) - * [IBM Watson Services](#ibm-watson-services) - * [AlchemyLanguage](#alchemylanguage) - * [AlchemyData News](#alchemydata-news) - * [Authorization](#authorization) - * [Conversation](#conversation) - * [Dialog](#dialog) - * [Discovery](#discovery) - * [Document Conversion](#document-conversion) - * [Language Translator](#language-translator) - * [Natural Language Classifier](#natural-language-classifier) - * [Natural Language Understanding](#natural-language-understanding) - * [Personality Insights](#personality-insights) - * [Retrieve and Rank](#retrieve-and-rank) - * [Speech to Text](#speech-to-text) - * [Text to Speech](#text-to-speech) - * [Tone Analyzer](#tone-analyzer) - * [Tradeoff Analytics](#tradeoff-analytics) - * [Visual Recognition](#visual-recognition) - * [Removed Services](#removed-services) - * [Composing Services](#composing-services) - * [Debug](#debug) - * [Tests](#tests) - * [Open Source @ IBM](#open-source--ibm) - * [License](#license) - * [Contributing](#contributing) - - -## Major changes for v2 - -### BREAKING: user-supplied credentials are now preferred over Bluemix-supplied credentials. - -See [Usage](#usage) section for details. - -This change also removes the `use_vcap_services` flag. - -### Client-side usage is partially supported - -See [Client-side usage](#client-side-usage) section for details. - -### New recommended method for instantiating services: +# Watson APIs Node.js SDK -```js -var ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3'); - -var toneAnalyzer = new ToneAnalyzerV3({/*...*/}); -``` +[![Build and Test](https://github.com/watson-developer-cloud/node-sdk/workflows/Build%20and%20Test/badge.svg?branch=master)](https://github.com/watson-developer-cloud/node-sdk/actions?query=workflow%3A"Build+and+Test") +[![Deploy and Publish](https://github.com/watson-developer-cloud/node-sdk/workflows/Deploy%20and%20Publish/badge.svg?branch=master)](https://github.com/watson-developer-cloud/node-sdk/actions?query=workflow%3A%22Deploy+and+Publish%22) +[![codecov](https://codecov.io/gh/watson-developer-cloud/node-sdk/branch/master/graph/badge.svg)](https://codecov.io/gh/watson-developer-cloud/node-sdk) +[![npm-version](https://img.shields.io/npm/v/ibm-watson.svg)](https://www.npmjs.com/package/ibm-watson) +[![npm-downloads](https://img.shields.io/npm/dm/ibm-watson.svg)](https://www.npmjs.com/package/ibm-watson) +[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) -This was primarily done to enable smaller bundles for client-side usage, but also gives a small performance boost for server-side usage by only loading the portion of the library that is actually needed. +## Deprecated builds +[![Build Status](https://secure.travis-ci.org/watson-developer-cloud/node-sdk.svg?branch=master)](http://travis-ci.org/watson-developer-cloud/node-sdk) -The following methods will also work, but cause the entire library to be loaded: +Node.js client library to use the Watson APIs. -```js -// Alternate methods of using the library. -// Not recommended, especially for client-side JS. -var watson = require('watson-developer-cloud'); - -var toneAnalyzer = new watson.ToneAnalyzerV3({/*...*/}); +## Before you begin +* You need an [IBM Cloud][ibm-cloud-onboarding] account. -var tone_analyzer = watson.tone_analyzer({version: 'v3', /*...*/}); -``` +## Prerequisites +- **Node >= 20**: This SDK is tested with Node versions 16 and up. It may work on previous versions but this is not officially supported. ## Installation ```sh -$ npm install watson-developer-cloud --save +npm install ibm-watson ``` ## Usage -The examples below assume that you already have service credentials. If not, -you will have to create a service in [Bluemix][bluemix]. - -If you are running your application in Bluemix, you don't need to specify the -credentials; the library will get them for you by looking at the `VCAP_SERVICES` environment variable. +```js +import AssistantV2 from 'ibm-watson/assistant/v2'; +import { IamAuthenticator } from 'ibm-watson/auth'; -Credentials are checked for in the following order: +const assistantClient = new AssistantV2({ + authenticator: new IamAuthenticator({ apikey: '{apikey}' }), + version: '{version}', +}); -1. Hard-coded or programatic credentials passed to the service constructor +// ... -2. `SERVICE_NAME_USERNAME` and `SERVICE_NAME_PASSWORD` environment properties (or `SERVICE_NAME_API_KEY` when appropriate) and, optionally, `SERVICE_NAME_URL` +``` -3. Bluemix-supplied credentials (via the `VCAP_SERVICES` JSON-encoded environment property) +The [examples][examples] folder has basic and advanced examples. The examples within each service assume that you already have [service credentials](#getting-credentials). ### Client-side usage + +Starting with v5.0.0, the SDK should work in the browser, out of the box, with most bundlers. + See the `examples/` folder for [Browserify](http://browserify.org/) and [Webpack](http://webpack.github.io/) client-side SDK examples (with server-side generation of auth tokens.) Note: not all services currently support CORS, and therefore not all services can be used client-side. Of those that do, most require an auth token to be generated server-side via the [Authorization Service](#authorization). -### Data collection opt-out +## Authentication +Watson services are migrating to token-based Identity and Access Management (IAM) authentication. -By default, [all requests are logged](https://console.bluemix.net/docs/services/watson/getting-started-logging.html). This can be disabled of by setting the `X-Watson-Learning-Opt-Out` header when creating the service instance: +- With some service instances, you authenticate to the API by using **[IAM](#iam)**. +- In other instances, you authenticate by providing the **[username and password](#username-and-password)** for the service instance. +- If you are using a Watson service on ICP, you will need to authenticate in [a specific way](#icp). +- If you are using a Watson service on AWS, you will need to authenticate using [mcsp](#mcsp). -```js -var myInstance = new watson.WhateverServiceV1({ - /* username, password, version, etc... */ - headers: { - "X-Watson-Learning-Opt-Out": true - } -}); -``` +Authentication is accomplished using dedicated Authenticators for each authentication scheme. Import authenticators from `ibm-watson/auth` or rely on externally-configured credentials which will be read from a credentials file or environment variables. -## Documentation +To learn more about the Authenticators and how to use them with your services, see [the detailed documentation](https://github.com/IBM/node-sdk-core/blob/master/Authentication.md). -You can find links to the documentation at https://www.ibm.com/watson/developercloud/doc/index.html. Find the service that you're interested in, click **API reference**, and then select the **Node** tab. +### Getting credentials -There are also auto-generated JSDocs available at http://watson-developer-cloud.github.io/node-sdk/latest/ +To find out which authentication to use, view the service credentials. You find the service credentials for authentication the same way for all Watson services: -## Getting the service credentials -You will need the `username` and `password` (`api_key` for AlchemyAPI) credentials for each service. Service credentials are different from your Bluemix account username and password. +1. Go to the IBM Cloud [Dashboard](https://cloud.ibm.com/) page. +2. Either click an existing Watson service instance in your [resource list](https://cloud.ibm.com/resources) or click [**Create resource > AI**](https://cloud.ibm.com/catalog?category=ai) and create a service instance. +3. Click on the **Manage** item in the left nav bar of your service instance. -To get your service credentials, follow these steps: +On this page, you should be able to see your credentials for accessing your service instance. -1. Log in to Bluemix at https://bluemix.net. -1. Create an instance of the service: - 1. In the Bluemix **Catalog**, select the service you want to use. - 1. Type a unique name for the service instance in the **Service name** field. For example, type `my-service-name`. Leave the default values for the other options. - 1. Click **Create**. - 1. From the service dashboard, click **Service credentials**. - 1. Click **View credentials** under **Actions**. - 1. Copy `username` and `password` (or `api_key` for Visual Recognition). +In your code, you can use these values in the service constructor or with a method call after instantiating your service. -## Questions +### Supplying credentials -If you are having difficulties using the APIs or have a question about the Watson services, please ask a question at [dW Answers](https://developer.ibm.com/answers/questions/ask/?topics=watson) or [Stack Overflow](http://stackoverflow.com/questions/ask?tags=ibm-watson-cognitive). +There are two ways to supply the credentials you found above to the SDK for authentication: +- Allow the credentials to be automatically read from the environment +- Instantiate an authenticator with explicit credentials and use it to create your service -## Examples -The [examples][examples] folder has basic and advanced examples. +#### Credentials file (easier!) -## IBM Watson services -The Watson Developer Cloud offers a variety of services for building cognitive -apps. +With a credentials file, you just need to put the file in the right place and the SDK will do the work of parsing it and authenticating. You can get this file by clicking the **Download** button for the credentials in the **Manage** tab of your service instance. -### AlchemyLanguage -[AlchemyLanguage][alchemy_language] offers 12 API functions as part of its text analysis service, each of which uses sophisticated natural language processing techniques to analyze your content and add high-level semantic information. +The file downloaded will be called `ibm-credentials.env`. This is the name the SDK will search for and **must** be preserved unless you want to configure the file path (more on that later). The SDK will look for your `ibm-credentials.env` file in the following places (in order): -Use the [Sentiment Analysis][sentiment_analysis] endpoint to identify positive/negative sentiment within a sample text document. +- Directory provided by the environment variable `IBM_CREDENTIALS_FILE` +- Your system's home directory +- Your current working directory (the directory Node is executed from) -```javascript -var AlchemyLanguageV1 = require('watson-developer-cloud/alchemy-language/v1'); +As long as you set that up correctly, you don't have to worry about setting any authentication options in your code. So, for example, if you created and downloaded the credential file for your Assistant instance, you just need to do the following: -var alchemy_language = new AlchemyLanguageV1({ - api_key: 'API_KEY' -}); +```js +const AssistantV2 = require('ibm-watson/assistant/v2'); +const assistant = new AssistantV2({ version: '2024-08-25' }); +``` -var params = { - text: 'IBM Watson won the Jeopardy television show hosted by Alex Trebek' -}; +And that's it! -alchemy_language.sentiment(params, function (err, response) { - if (err) - console.log('error:', err); - else - console.log(JSON.stringify(response, null, 2)); -}); +If you're using more than one service at a time in your code and get two different `ibm-credentials.env` files, just put the contents together in one `ibm-credentials.env` file and the SDK will handle assigning credentials to their appropriate services. + +**Special Note**: Due to legacy issues in Assistant V1 and V2, the following parameter `serviceName` must be added when creating the service object: +```js +const AssistantV2 = require('ibm-watson/assistant/v2'); +const assistant = new AssistantV2({ + version: '2024-08-25', + serviceName: 'assistant', +}) ``` -### AlchemyData News -[Alchemy Data News][alchemy_data_news] indexes 250k to 300k English language news and blog articles every day with historical search available for the past 60 days. -Example: Get the volume data from the last 7 days using 12hs of time slice. +It is worth noting that if you are planning to rely on VCAP_SERVICES for authentication then the `serviceName` parameter **MUST** be removed otherwise VCAP_SERVICES will not be able to authenticate you. See [Cloud Authentication Prioritization](#cloud-authentication-prioritization) for more details. -```javascript -var AlchemyDataNewsV1 = require('watson-developer-cloud/alchemy-data-news/v1'); +If you would like to configure the location/name of your credential file, you can set an environment variable called `IBM_CREDENTIALS_FILE`. **This will take precedence over the locations specified above.** Here's how you can do that: -var alchemy_data_news = new AlchemyDataNewsV1({ - api_key: '' -}); +```bash +export IBM_CREDENTIALS_FILE="" +``` -var params = { - start: 'now-1d', - end: 'now' -}; +where `` is something like `/home/user/Downloads/.env`. If you just provide a path to a directory, the SDK will look for a file called `ibm-credentials.env` in that directory. -alchemy_data_news.getNews(params, function (err, news) { - if (err) - console.log('error:', err); - else - console.log(JSON.stringify(news, null, 2)); -}); -``` +#### Manually -### Authorization -The Authorization service can generate auth tokens for situations where providing the service username/password is undesirable. +The SDK also supports setting credentials manually in your code, using an Authenticator. -Tokens are valid for 1 hour and may be sent using the `X-Watson-Authorization-Token` header or the `watson-token` query param. +##### IAM -Note that the token is supplied URL-encoded, and will not be accepted if it is double-encoded in a querystring. +Some services use token-based Identity and Access Management (IAM) authentication. IAM authentication uses a service API key to get an access token that is passed with the call. Access tokens are valid for approximately one hour and must be regenerated. -```javascript -var watson = require('watson-developer-cloud'); +To use IAM authentication, you must use an `IamAuthenticator` or a `BearerTokenAuthenticator`. +- Use the `IamAuthenticator` to have the SDK manage the lifecycle of the access token. The SDK requests an access token, ensures that the access token is valid, and refreshes it if necessary. +- Use the `BearerTokenAuthenticator` if you want to manage the lifecycle yourself. For details, see [Authenticating with IAM tokens](https://cloud.ibm.com/docs/watson/getting-started-iam.html). If you want to switch your authenticator, you must override the `authenticator` property directly. -var authorization = new watson.AuthorizationV1({ - username: '', - password: '', - url: watson.TextToSpeechV1.URL -}); +##### ICP -authorization.getToken(function (err, token) { - if (!token) { - console.log('error:', err); - } else { - // Use your token here - } -}); -``` +To use the SDK in a Cloud Pak, use the `CloudPakForDataAuthenticator`. This will require a username, password, and URL. +##### MCSP -### Conversation +To use the SDK through a third party cloud provider (such as AWS), use the `MCSPAuthenticator`. This will require the base endpoint URL for the MCSP token service (e.g. https://iam.platform.saas.ibm.com) and an apikey. + +```js +import AssistantV2 from 'ibm-watson/assistant/v2' +import { McspAuthenticator } from 'ibm-watson/auth'; + +# In the constructor, letting the SDK manage the token +const authenticator = new McspAuthenticator({ + url: 'token_service_endpoint', + apikey: 'apikey', +}) +const assistant = AssistantV2(version='2024-08-25', + authenticator=authenticator) +assistant.setServiceUrl('') +``` -Use the [Conversation][conversation] service to determine the intent of a message. +### Cloud Authentication Prioritization -Note: you must first create a workspace via Bluemix. See [the documentation](https://console.bluemix.net/docs/services/conversation/index.html#about) for details. +When uploading your application to IBM Cloud there is a certain priority Watson services will use when looking for proper credentials. The order is as follows: +1. Programmatic (i.e. IamAuthenticator) +2. Credentials File +3. VCAP_SERVICES (an environment variable used by IBM Cloud, details found [here](https://cloud.ibm.com/docs/cloud-foundry-public?topic=cloud-foundry-public-deployingapps#app_env)) + +## Setting the Service URL +You can set or reset the base URL after constructing the client instance using the `setServiceUrl` method: ```js -var ConversationV1 = require('watson-developer-cloud/conversation/v1'); +const AssistantV2 = require('ibm-watson/assistant/v2'); -var conversation = new ConversationV1({ - username: '', - password: '', - version_date: ConversationV1.VERSION_DATE_2017_05_26 +const assistant = AssistantV2({ +/* authenticator, version, etc... */ }); -conversation.message({ - input: { text: 'What\'s the weather?' }, - workspace_id: '' - }, function(err, response) { - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); - } -}); +assistant.setServiceUrl(''); ``` -### Dialog -The Dialog service was deprecated on August 15, 2016, existing instances of the service will continue to function until August 9, 2017. Users of the Dialog service should migrate their applications to use the Conversation service. See the [migration documentation][dialog_migration] to learn how to migrate your dialogs to the Conversation service. - -### Discovery - -Use the [Discovery Service][discovery] to search and analyze structured and unstructured data. +## Promises -```javascript -var DiscoveryV1 = require('watson-developer-cloud/discovery/v1'); +All SDK methods are asynchronous, as they are making network requests to Watson services. To handle receiving the data from these requests, the SDK offers support with Promises. +```js +const AssistantV2 = require('ibm-watson/assistant/v2'); -var discovery = new DiscoveryV1({ - username: '', - password: '', - version_date: DiscoveryV1.VERSION_DATE_2017_04_27 +const assistant = new AssistantV2({ +/* authenticator, version, serviceUrl, etc... */ }); -discovery.query({ - environment_id: '', - collection_id: '', - query: 'my_query' - }, function(err, response) { - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - }); +// using Promises +assistant.listAssistants() + .then(body => { + console.log(JSON.stringify(body, null, 2)); + }) + .catch(err => { + console.log(err); + }); + +// using Promises provides the ability to use async / await +async function callAssistant() { // note that callAssistant also returns a Promise + const body = await assistant.listAssistants(); +} ``` -### Document Conversion +## Sending request headers + +Custom headers can be passed with any request. Each method has an optional parameter `headers` which can be used to pass in these custom headers, which can override headers that we use as parameters. -```javascript -var DocumentConversionV1 = require('watson-developer-cloud/document-conversion/v1'); -var fs = require('fs'); +For example, this is how you can pass in custom headers to Watson Assistant service. In this example, the `'custom'` value for `'Accept-Language'` will override the default header for `'Accept-Language'`, and the `'Custom-Header'` while not overriding the default headers, will additionally be sent with the request. -var document_conversion = new DocumentConversionV1({ - username: '', - password: '', - version_date: '2015-12-01' +```js +const assistant = new watson.AssistantV2({ +/* authenticator, version, serviceUrl, etc... */ }); -// convert a single document -document_conversion.convert({ - // (JSON) ANSWER_UNITS, NORMALIZED_HTML, or NORMALIZED_TEXT - file: fs.createReadStream('sample-docx.docx'), - conversion_target: document_conversion.conversion_target.ANSWER_UNITS, - // Add custom configuration properties or omit for defaults - word: { - heading: { - fonts: [ - { level: 1, min_size: 24 }, - { level: 2, min_size: 16, max_size: 24 } - ] - } - } -}, function (err, response) { - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); +assistant.message({ + workspaceId: 'something', + input: {'text': 'Hello'}, + headers: { + 'Custom-Header': 'custom', + 'Accept-Language': 'custom' } -}); +}) + .then(response => { + console.log(JSON.stringify(response.result, null, 2)); + }) + .catch(err => { + console.log('error: ', err); + }); ``` -See the [Document Conversion integration example][document_conversion_integration_example] about how to integrate the Document Conversion service -with the Retrieve and Rank service. +## Parsing HTTP response +The SDK now returns the full HTTP response by default for each method. -### Language Translation +Here is an example of how to access the response headers for Watson Assistant: -The IBM Watson™ Language Translation service has been rebranded as the Language Translator service. +```js +const assistant = new AssistantV2({ +/* authenticator, version, serviceUrl, etc... */ +}); -The Language Translator service provides the same capabilities as the Language Translation service, but with simpler pricing. For information about migrating existing applications from the Language Translation service to the Language Translator service, see the [Migration documentation][language-translator-migration] +assistant.message(params).then( + response => { + console.log(response.headers); + }, + err => { + console.log(err); + /* + `err` is an Error object. It will always have a `message` field + and depending on the type of error, it may also have the following fields: + - body + - headers + - name + - code + */ + } +); +``` -```javascript -var LanguageTranslationV2 = require('watson-developer-cloud/language-translation/v2'); +### Global Transaction ID +Every SDK call returns a response with a transaction ID in the `X-Global-Transaction-Id` header. Together with the service instance region, this ID helps support teams troubleshoot issues from relevant logs. -var language_translation = new LanguageTranslationV2({ - username: '', - password: '' +#### HTTP Example +```js +const assistant = new AssistantV2({ +/* authenticator, version, serviceUrl, etc... */ }); + +assistant.message(params).then( + response => { + console.log(response.headers['X-Global-Transaction-Id']); + }, + err => { + console.log(err); + } +); ``` -### Language Translator +#### WebSocket Example +```js +const speechToText = new SpeechToTextV1({ +/* authenticator, version, serviceUrl, etc... */ +}); +const recognizeStream = recognizeUsingWebSocket(params); + +// getTransactionId returns a Promise that resolves to the ID +recognizeStream.getTransactionId().then( + globalTransactionId => console.log(globalTransactionId), + err => console.log(err), +); +``` -Translate text from one language to another or idenfity a language using the [Language Translator][language_translator] service. +However, the transaction ID isn't available when the API doesn't return a response for some reason. In that case, you can set your own transaction ID in the request. For example, replace `` in the following example with a unique transaction ID. -**Note:** There is a deprecated Language *Translation* service and a newer Language *Translator* service. The only difference is the pricing structure and the service endpoint. +```js +const assistant = new AssistantV2({ +/* authenticator, version, serviceUrl, etc... */ +}); -The SDK currently defaults to the older endpoint for both `LanguageTranslationV2` and `LanguageTranslatorV2`, but `LanguageTranslatorV2`'s default endpoint will change in the next major release (3.0.0). **To guarantee compatibility, include the `url` when creating a `LanguageTranslatorV2` instance.** +assistant.message({ + workspaceId: 'something', + input: {'text': 'Hello'}, + headers: { + 'X-Global-Transaction-Id': '' + } +}).then( + response => { + console.log(response.headers['X-Global-Transaction-Id']); + }, + err => { + console.log(err); + } +); +``` -See [Migrating from Language Translation][language-translator-migration] for more details. +## Data collection opt-out -```javascript -var LanguageTranslatorV2 = require('watson-developer-cloud/language-translator/v2'); +By default, [all requests are logged](https://cloud.ibm.com/docs/watson/getting-started-logging.html). This can be disabled of by setting the `X-Watson-Learning-Opt-Out` header when creating the service instance: -var language_translator = new LanguageTranslatorV2({ - username: '', - password: '', - url: 'https://gateway.watsonplatform.net/language-translator/api/' +```js +const myInstance = new watson.WhateverServiceV1({ + /* authenticator, version, serviceUrl, etc... */ + headers: { + "X-Watson-Learning-Opt-Out": true + } }); +``` + +## Configuring the HTTPS Agent +The SDK provides the user with full control over the HTTPS Agent used to make requests. This is available for both the service client and the authenticators that make network requests (e.g. `IamAuthenticator`). Outlined below are a couple of different scenarios where this capability is needed. Note that this functionality is for Node environments only - these configurtions will have no effect in the browser. -language_translator.translate({ - text: 'A sentence must have a verb', source : 'en', target: 'es' }, - function (err, translation) { - if (err) - console.log('error:', err); - else - console.log(JSON.stringify(translation, null, 2)); +### Use behind a corporate proxy +To use the SDK (which makes HTTPS requests) behind an HTTP proxy, a special tunneling agent must be used. Use the package [`tunnel`](https://github.com/koichik/node-tunnel/) for this. Configure this agent with your proxy information, and pass it in as the HTTPS agent in the service constructor. Additionally, you must set `proxy` to `false` in the service constructor. If using an Authenticator that makes network requests (IAM or CP4D), you must set these fields in the Authenticator constructor as well. + +See this example configuration: +```js +const tunnel = require('tunnel'); +const AssistantV2 = require('ibm-watson/assistant/v2'); +const { IamAuthenticator } = require('ibm-watson/auth'); + +const httpsAgent = tunnel.httpsOverHttp({ + proxy: { + host: 'some.host.org', + port: 1234, + }, }); -language_translator.identify({ - text: 'The language translator service takes text input and identifies the language used.' }, - function (err, language) { - if (err) - console.log('error:', err); - else - console.log(JSON.stringify(language, null, 2)); +const assistant = new AssistantV2({ + authenticator: new IamAuthenticator({ + apikey: 'fakekey-1234' + httpsAgent, // not necessary if using Basic or BearerToken authentication + proxy: false, + }), + version: '2024-08-25', + httpsAgent, + proxy: false, }); ``` -### Natural Language Classifier +### Sending custom certificates +To send custom certificates as a security measure in your request, use the `cert`, `key`, and/or `ca` properties of the HTTPS Agent. See [this documentation](https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options) for more information about the options. Note that the entire contents of the file must be provided - not just the file name. +```js +const AssistantV2 = require('ibm-watson/assistant/v2'); +const { IamAuthenticator } = require('ibm-watson/auth'); + +const certFile = fs.readFileSync('./my-cert.pem'); +const keyFile = fs.readFileSync('./my-key.pem'); + +const assistant = new AssistantV2({ + authenticator: new IamAuthenticator({ + apikey: 'fakekey-1234', + httpsAgent: new https.Agent({ + key: keyFile, + cert: certFile, + }) + }), + version: '2024-08-25', + httpsAgent: new https.Agent({ + key: keyFile, + cert: certFile, + }), +}); +``` -Use [Natural Language Classifier](https://console.bluemix.net/docs/services/natural-language-classifier/getting-started.html) service to create a classifier instance by providing a set of representative strings and a set of one or more correct classes for each as training. Then use the trained classifier to classify your new question for best matching answers or to retrieve next actions for your application. +### Disabling SSL Verification -```javascript -var NaturalLanguageClassifierV1 = require('watson-developer-cloud/natural-language-classifier/v1'); +The HTTP client can be configured to disable SSL verification. **Note that this has serious security implications - only do this if you really mean to!** ⚠️ -var natural_language_classifier = new NaturalLanguageClassifierV1({ - username: '', - password: '' -}); +To do this, set `disableSslVerification` to `true` in the service constructor and/or authenticator constructor, like below: -natural_language_classifier.classify({ - text: 'Is it sunny?', - classifier_id: '' }, - function(err, response) { - if (err) - console.log('error:', err); - else - console.log(JSON.stringify(response, null, 2)); +```js +const assistant = new AssistantV2({ + serviceUrl: '', + version: '', + authenticator: new IamAuthenticator({ apikey: '', disableSslVerification: true }), // this will disable SSL verification for requests to the token endpoint + disableSslVerification: true, // this will disable SSL verification for any request made with this client instance }); ``` -See this [example](https://github.com/watson-developer-cloud/node-sdk/blob/master/examples/natural_language_classifier.v1.js) to learn how to create a classifier. +### All other configuration options +To see all possible https agent configuration options go to this [link](https://node.readthedocs.io/en/latest/api/https/#httpsrequestoptions-callback) for the quickest and most readable format. For even more detailed information, you can go to the Node documentation [here](https://nodejs.org/api/http.html#httprequestoptions-callback) -### Natural Language Understanding +## Documentation -Use Natural Language Understanding is a collection of natural language processing APIs that help you understand sentiment, - keywords, entities, high-level concepts and more. +You can find links to the documentation at https://cloud.ibm.com/developer/watson/documentation. Find the service that you're interested in, click **API reference**, and then select the **Node** tab. -```javascript -var fs = require('fs'); -var NaturalLanguageUnderstandingV1 = require('watson-developer-cloud/natural-language-understanding/v1.js'); +## Questions -var nlu = new NaturalLanguageUnderstandingV1({ - username: '', - password: '', - version_date: NaturalLanguageUnderstandingV1.VERSION_DATE_2017_02_27 -}); +If you have issues with the APIs or have a question about the Watson services, see [Stack Overflow](https://stackoverflow.com/questions/tagged/ibm-watson+node.js). -nlu.analyze({ - 'html': file_data, // Buffer or String - 'features': { - 'concepts': {}, - 'keywords': {}, - } -}, function(err, response) { - if (err) - console.log('error:', err); - else - console.log(JSON.stringify(response, null, 2)); - }); +## IBM Watson services + +### Assistant v2 + +Use the [Assistant][assistant] service to determine the intent of a message. +Note: You must first create a workspace via IBM Cloud. See [the documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-index#about) for details. + +```js +const AssistantV2 = require('ibm-watson/assistant/v2'); +const { IamAuthenticator } = require('ibm-watson/auth'); + +const assistant = new AssistantV2({ + authenticator: new IamAuthenticator({ apikey: '' }), + serviceUrl: 'https://api.us-south.assistant.watson.cloud.ibm.com', + version: '2018-09-19' +}); + +assistant.message( + { + input: { text: "What's the weather?" }, + assistantId: '', + sessionId: '', + }) + .then(response => { + console.log(JSON.stringify(response.result, null, 2)); + }) + .catch(err => { + console.log(err); + }); ``` -### Personality Insights -Analyze text in English and get a personality profile by using the -[Personality Insights][personality_insights] service. +### Assistant v1 -```javascript -var PersonalityInsightsV3 = require('watson-developer-cloud/personality-insights/v3'); +Use the [Assistant][assistant] service to determine the intent of a message. -var personality_insights = new PersonalityInsightsV3({ - username: '', - password: '', - version_date: '2016-10-19' -}); +Note: You must first create a workspace via IBM Cloud. See [the documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-index#about) for details. -personality_insights.profile({ - text: 'Enter more than 100 unique words here...', - consumption_preferences: true - }, - function (err, response) { - if (err) - console.log('error:', err); - else - console.log(JSON.stringify(response, null, 2)); -}); +```js +const AssistantV2 = require('ibm-watson/assistant/v2'); +const { IamAuthenticator } = require('ibm-watson/auth'); + +const assistant = new AssistantV2({ + authenticator: new IamAuthenticator({ apikey: '' }), + serviceUrl: 'https://api.us-south.assistant.watson.cloud.ibm.com', + version: '2024-08-25' +}); + +assistant.message( + { + input: { text: "What's the weather?" }, + workspaceId: '' + }) + .then(response => { + console.log(JSON.stringify(response.result, null, 2)); + }) + .catch(err => { + console.log(err); + }); ``` -**Note:** Don't forget to update the `text` variable! +### Discovery v2 -### Retrieve and Rank -Use the [Retrieve and Rank][retrieve_and_rank] service to enhance search results with machine learning. +Use the [Discovery Service][discovery] to search and analyze structured and unstructured data. -```javascript -var RetrieveAndRankV1 = require('watson-developer-cloud/retrieve-and-rank/v1'); +```js +const DiscoveryV2 = require('ibm-watson/discovery/v2'); +const { IamAuthenticator } = require('ibm-watson/auth'); -var retrieve = new RetrieveAndRankV1({ - username: '', - password: '', +const discovery = new DiscoveryV2({ + authenticator: new IamAuthenticator({ apikey: '' }), + serviceUrl: 'https://api.us-south.discovery.watson.cloud.ibm.com', + version: '2019-11-22' }); -var solrClient = retrieve.createSolrClient({ - cluster_id: 'INSERT YOUR CLUSTER ID HERE', - collection_name: 'example_collection' -}); +discovery.query( + { + projectId: '', + collectionId: '', + query: 'my_query' + }) + .then(response => { + console.log(JSON.stringify(response.result, null, 2)); + }) + .catch(err => { + console.log(err); + }); +``` -// add a document -var doc = { id : 1234, title_t : 'Hello', text_field_s: 'some text' }; -solrClient.add(doc, function(err) { - if(err) { - console.log('Error indexing document: ' + err); - } else { - console.log('Indexed a document.'); - solrClient.commit(function(err) { - if(err) { - console.log('Error committing change: ' + err); - } else { - console.log('Successfully commited changes.'); - } - }); - } -}); -// search all documents -var query = solrClient.createQuery(); -query.q({ '*' : '*' }); -solrClient.search(query, function(err, searchResponse) { - if(err) { - console.log('Error searching for documents: ' + err); - } else { - console.log('Found ' + searchResponse.response.numFound + ' document(s).'); - console.log('First document: ' + JSON.stringify(searchResponse.response.docs[0], null, 2)); - } -}); +### Natural Language Understanding + +[Natural Language Understanding](https://cloud.ibm.com/docs/services/natural-language-understanding/getting-started.html) is a collection of natural language processing APIs that help you understand sentiment, keywords, entities, high-level concepts and more. + +```js +const fs = require('fs'); +const NaturalLanguageUnderstandingV1 = require('ibm-watson/natural-language-understanding/v1'); +const { IamAuthenticator } = require('ibm-watson/auth'); + +const nlu = new NaturalLanguageUnderstandingV1({ + authenticator: new IamAuthenticator({ apikey: '' }), + version: '2018-04-05', + serviceUrl: 'https://api.us-south.natural-language-understanding.watson.cloud.ibm.com' +}); + +nlu.analyze( + { + html: file_data, // Buffer or String + features: { + concepts: {}, + keywords: {} + } + }) + .then(response => { + console.log(JSON.stringify(response.result, null, 2)); + }) + .catch(err => { + console.log('error: ', err); + }); ``` + ### Speech to Text -Use the [Speech to Text][speech_to_text] service to recognize the text from a .wav file. -```javascript -var SpeechToTextV1 = require('watson-developer-cloud/speech-to-text/v1'); -var fs = require('fs'); +Use the [Speech to Text][speech_to_text] service to recognize the text from a `.wav` file. + +```js +const fs = require('fs'); +const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1'); +const { IamAuthenticator } = require('ibm-watson/auth'); -var speech_to_text = new SpeechToTextV1({ - username: '', - password: '' +const speechToText = new SpeechToTextV1({ + authenticator: new IamAuthenticator({ apikey: '' }), + serviceUrl: 'https://api.us-south.speech-to-text.watson.cloud.ibm.com' }); -var params = { +const params = { // From file audio: fs.createReadStream('./resources/speech.wav'), - content_type: 'audio/l16; rate=44100' + contentType: 'audio/l16; rate=44100' }; -speech_to_text.recognize(params, function(err, res) { - if (err) +speechToText.recognize(params) + .then(response => { + console.log(JSON.stringify(response.result, null, 2)); + }) + .catch(err => { console.log(err); - else - console.log(JSON.stringify(res, null, 2)); -}); + }); // or streaming fs.createReadStream('./resources/speech.wav') - .pipe(speech_to_text.createRecognizeStream({ content_type: 'audio/l16; rate=44100' })) + .pipe(speechToText.recognizeUsingWebSocket({ contentType: 'audio/l16; rate=44100' })) .pipe(fs.createWriteStream('./transcription.txt')); ``` + ### Text to Speech -Use the [Text to Speech][text_to_speech] service to synthesize text into a .wav file. + +Use the [Text to Speech][text_to_speech] service to synthesize text into an audio file. ```js -var TextToSpeechV1 = require('watson-developer-cloud/text-to-speech/v1'); -var fs = require('fs'); +const fs = require('fs'); +const TextToSpeechV1 = require('ibm-watson/text-to-speech/v1'); +const { IamAuthenticator } = require('ibm-watson/auth'); -var text_to_speech = new TextToSpeechV1({ - username: '', - password: '' +const textToSpeech = new TextToSpeechV1({ + authenticator: new IamAuthenticator({ apikey: '' }), + serviceUrl: 'https://api.us-south.text-to-speech.watson.cloud.ibm.com' }); -var params = { +const params = { text: 'Hello from IBM Watson', voice: 'en-US_AllisonVoice', // Optional voice accept: 'audio/wav' @@ -550,135 +585,54 @@ var params = { // Synthesize speech, correct the wav header, then save to disk // (wav header requires a file length, but this is unknown until after the header is already generated and sent) +// note that `repairWavHeaderStream` will read the whole stream into memory in order to process it. +// the method returns a Promise that resolves with the repaired buffer textToSpeech - .synthesize(params, function(err, audio) { - if (err) { - console.log(err); - return; - } - textToSpeech.repairWavHeader(audio); - fs.writeFileSync('audio.wav', audio); + .synthesize(params) + .then(response => { + const audio = response.result; + return textToSpeech.repairWavHeaderStream(audio); + }) + .then(repairedFile => { + fs.writeFileSync('audio.wav', repairedFile); console.log('audio.wav written with a corrected wav header'); -}); -``` - -### Tone Analyzer -Use the [Tone Analyzer][tone_analyzer] service to analyze the -emotion, writing and social tones of a text. - -```js -var ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3'); - -var tone_analyzer = new ToneAnalyzerV3({ - username: '', - password: '', - version_date: '2016-05-19' -}); - -tone_analyzer.tone({ text: 'Greetings from Watson Developer Cloud!' }, - function(err, tone) { - if (err) - console.log(err); - else - console.log(JSON.stringify(tone, null, 2)); -}); -``` - -### Tradeoff Analytics -Use the [Tradeoff Analytics][tradeoff_analytics] service to find the best -phone that minimizes price and weight and maximizes screen size. - -```javascript -var TradeoffAnalyticsV1 = require('watson-developer-cloud/tradeoff-analytics/v1'); - -var tradeoff_analytics = new TradeoffAnalyticsV1({ - username: '', - password: '' -}); - -// From file -var params = require('./resources/problem.json'); - -tradeoff_analytics.dilemmas(params, function(err, res) { - if (err) + }) + .catch(err => { console.log(err); - else - console.log(JSON.stringify(res, null, 2)); -}); -``` - -### Visual Recognition -Use the [Visual Recognition][visual_recognition] service to recognize the -following picture. - - + }); -```js -var VisualRecognitionV3 = require('watson-developer-cloud/visual-recognition/v3'); -var fs = require('fs'); - -var visual_recognition = new VisualRecognitionV3({ - api_key: '', - version_date: VisualRecognitionV3.VERSION_DATE_2016_05_20 -}); - -var params = { - images_file: fs.createReadStream('./resources/car.png') -}; -visual_recognition.classify(params, function(err, res) { - if (err) - console.log(err); - else - console.log(JSON.stringify(res, null, 2)); -}); +// or, using WebSockets +textToSpeech.synthesizeUsingWebSocket(params); +synthStream.pipe(fs.createWriteStream('./audio.ogg')); +// see more information in examples/text_to_speech_websocket.js ``` -## Removed services - -The following services are no longer available. - -* **AlchemyVision**: Visual Recognition replaced Alchemy Vision with improved billing and a superset of the original features -* **Concept Insights**: AlchemyLanguage's concept function can be used as a replacement for most Concept Insights use cases; therefore, we encourage existing Concept Insights service users to migrate to AlchemyLanguage. -* **Relationship Extraction**: You can now access Relationship Extraction models with AlchemyLanguage. See the [migration guide][re_migration] for details. -* **Message Resonance**: Use Natural Language Understanding or Tone Analyzer to understand the emotions of your audience and messages. -* **Question and Answer**: Use Conversation or Natural Language Classifier to identify intent and Retrieve and Rank to search for relevant documents. -* **Visual Insights**: Use Visual Recognition to achieve a similar result -* **Concept Expansion**: Use Natural Langue Understanding to extract concepts, entities, and more. - -## Composing services - -### Integration of Tone Analyzer with Conversation -Sample code for [integrating Tone Analyzer and Conversation][conversation_tone_analyzer_example] is provided in the [examples directory][examples]. - -## Integration of Document Conversion with Retrieve and Rank -See the [Document Conversion integration example][document_conversion_integration_example] about how to integrate the Document Conversion service -with the Retrieve and Rank service. - ## Unauthenticated requests -By default, the library tries to use Basic Auth and will ask for `api_key` or `username` and `password` and send an `Authorization: Basic XXXXXXX`. You can avoid this by using: - -`use_unauthenticated`. +The SDK always expects an authenticator to be passed in. To make an unautuhenticated request, use the `NoAuthAuthenticator`. -```javascript -var watson = require('watson-developer-cloud'); +```js +const watson = require('ibm-watson'); +const { NoAuthAuthenticator } = require('ibm-watson/auth'); -var dialog = new watson.DialogV1({ - use_unauthenticated: true +const assistant = new watson.AssistantV2({ + authenticator: new NoAuthAuthenticator(), }); ``` ## Debug -This library relies on the `request` npm module writted by -[request][request_github] to call the Watson Services. To debug the apps, add -'request' to the `NODE_DEBUG` environment variable: + +This library relies on the `axios` npm module written by +[axios](https://github.com/axios/axios) to call the Watson Services. To debug the apps, add +'axios' to the `NODE_DEBUG` environment variable: ```sh -$ NODE_DEBUG='request' node app.js +$ NODE_DEBUG='axios' node app.js ``` where `app.js` is your Node.js file. ## Tests + Running all the tests: ```sh $ npm test @@ -686,42 +640,28 @@ $ npm test Running a specific test: ```sh -$ mocha -g '' +$ jest '' ``` -## Open Source @ IBM +## Open source @ IBM [Find more open source projects on the IBM Github Page.](http://ibm.github.io/) -## License +## Contributing +See [CONTRIBUTING](https://github.com/watson-developer-cloud/node-sdk/blob/master/.github/CONTRIBUTING.md). + +## Featured Projects +We love to highlight cool open-source projects that use this SDK! If you'd like to get your project added to the list, feel free to make an issue linking us to it. +- [Watson Speech to Text Demo App](https://github.com/watson-developer-cloud/speech-to-text-nodejs) +- [Watson Assistant Demo App](https://github.com/watson-developer-cloud/assistant-demo) +- [CLI tool for Watson Assistant](https://github.com/Themandunord/IWAC) +## License This library is licensed under Apache 2.0. Full license text is available in [COPYING][license]. -## Contributing -See [CONTRIBUTING](https://github.com/watson-developer-cloud/node-sdk/blob/master/.github/CONTRIBUTING.md). - -[conversation]: https://www.ibm.com/watson/services/conversation/ -[discovery]: https://www.ibm.com/watson/services/discovery/ -[personality_insights]: https://www.ibm.com/watson/services/personality-insights/ -[retrieve_and_rank]: https://www.ibm.com/watson/services/retrieve-and-rank/ -[visual_recognition]: https://www.ibm.com/watson/services/visual-recognition/ -[tone_analyzer]: https://www.ibm.com/watson/services/tone-analyzer/ +[assistant]: https://www.ibm.com/cloud/watson-assistant/ +[discovery]: https://www.ibm.com/cloud/watson-discovery [text_to_speech]: https://www.ibm.com/watson/services/text-to-speech/ [speech_to_text]: https://www.ibm.com/watson/services/speech-to-text/ -[tradeoff_analytics]: https://console.bluemix.net/docs/services/tradeoff-analytics/index.html -[language_translator]: https://www.ibm.com/watson/services/language-translator/ -[re_migration]: https://console.bluemix.net/docs/services/alchemy-language/migration.html -[alchemy_language]: https://console.bluemix.net/docs/services/alchemy-language/index.html -[alchemy_data_news]: https://console.bluemix.net/docs/services/alchemydata-news/index.html - -[bluemix]: https://console.bluemix.net -[npm_link]: https://www.npmjs.com/package/watson-developer-cloud -[request_github]: https://github.com/request/request -[dialog_migration]: https://console.bluemix.net/docs/services/conversation/index.html -[language-translator-migration]: https://console.bluemix.net/docs/services/language-translator/migrating.html - [examples]: https://github.com/watson-developer-cloud/node-sdk/tree/master/examples -[document_conversion_integration_example]: https://github.com/watson-developer-cloud/node-sdk/tree/master/examples/document_conversion_integration.v1.js -[conversation_tone_analyzer_example]: https://github.com/watson-developer-cloud/node-sdk/tree/master/examples/conversation_tone_analyzer_integration - -[license]: http://www.apache.org/licenses/LICENSE-2.0 +[ibm-cloud-onboarding]: http://cloud.ibm.com/registration?target=/developer/watson&cm_sp=WatsonPlatform-WatsonServices-_-OnPageNavLink-IBMWatson_SDKs-_-Node diff --git a/RELEASE.md b/RELEASE.md index 20bd85a40f..577b452fe6 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,19 +1,4 @@ # Release process -* Run the tests -* Update the changelog -* Include `[semver major]`, `[semver minor]`, or `[semver patch]` in the commit message. - -On Travis CI, the `create_semver_tag.sh` script will read the message, -and run the matching `npm version` command, and push the new tag to GitHub. -The tag will trigger a second travis build that automatically releases to npm. - - -# Manual process - -After performing the above steps: - -* Run `npm version major`, `npm version minor`, or `npm version patch` - to increment the version in package.json and create a git commit and tag. -* Run `git push --follow-tags` to push the commit and tag to github. -* Run `npm publish` to publish the changes to npm. +* Make a PR to `master` +* The SDK will be released to npm and GitHub once the PR is merged and the build passes diff --git a/alchemy-data-news/v1.js b/alchemy-data-news/v1.js deleted file mode 100644 index 4a15265f1f..0000000000 --- a/alchemy-data-news/v1.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const extend = require('extend'); -const requestFactory = require('../lib/requestwrapper'); -const util = require('util'); -const BaseServiceAlchemy = require('../lib/base_service_alchemy'); -const errorFormatter = require('../lib/alchemy_error_formatter'); - -/** - * @param {Object} options - * @constructor - */ -function AlchemyDataNewsV1(options) { - BaseServiceAlchemy.call(this, options); -} -util.inherits(AlchemyDataNewsV1, BaseServiceAlchemy); - -AlchemyDataNewsV1.prototype.name = 'alchemy_data_news'; -AlchemyDataNewsV1.prototype.version = 'v1'; -AlchemyDataNewsV1.URL = 'https://gateway-a.watsonplatform.net/calls'; - -/** - * Extracts a grouped, ranked list of named entities (people, companies, - * organizations, etc.) from text, a URL or HTML. - * @param {Object} params - * @param params.end - * @param params.start - * @param {Function} callback - */ -AlchemyDataNewsV1.prototype.getNews = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/data/GetNews', - method: 'GET', - json: true, - qs: extend({}, params, { outputMode: 'json' }) // change default output to json - }, - requiredParams: ['end', 'start'], - defaultOptions: this._options - }; - return requestFactory(parameters, errorFormatter(callback)); -}; - -module.exports = AlchemyDataNewsV1; diff --git a/alchemy-language/v1.js b/alchemy-language/v1.js deleted file mode 100644 index 1bcea9ea92..0000000000 --- a/alchemy-language/v1.js +++ /dev/null @@ -1,238 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const extend = require('extend'); -const util = require('util'); -const BaseServiceAlchemy = require('../lib/base_service_alchemy'); -const requestFactory = require('../lib/requestwrapper'); -// IMPORTANT: -// Due to the current design, the URL must be the last key on each endpoint or -// it could inadvertently clobber a url query param in the users request. -// see #236 -const endpoints = require('../lib/alchemy_endpoints.json'); -const helper = require('../lib/helper'); -const pick = require('object.pick'); -const errorFormatter = require('../lib/alchemy_error_formatter'); - -/** - * @privte - * @param method - * @return {Function} - */ -function createRequest(method) { - return function(_params, callback) { - const params = _params || {}; - const accepted_formats = Object.keys(endpoints[method]); - const format = helper.getFormat(params, accepted_formats); - - if (format === null) { - callback(new Error('Missing required parameters: ' + accepted_formats.join(', ') + ' needs to be specified')); - return; - } - - const parameters = { - options: { - url: endpoints[method][format], - method: 'POST', - json: true, - qs: pick(params, ['model']), - form: extend({}, params, { outputMode: 'json' }) // force output to json - }, - defaultOptions: this._options // eslint-disable-line no-invalid-this - }; - return requestFactory(parameters, errorFormatter(callback)); - }; -} - -/** - * - * @param {Object} options - * @constructor - */ -function AlchemyLanguageV1(options) { - BaseServiceAlchemy.call(this, options); -} -util.inherits(AlchemyLanguageV1, BaseServiceAlchemy); -AlchemyLanguageV1.prototype.name = 'alchemy_language'; -AlchemyLanguageV1.prototype.version = 'v1'; -AlchemyLanguageV1.URL = 'https://access.alchemyapi.com/calls'; - -/** - * Extracts a grouped, ranked list of named entities (people, companies, - * organizations, etc.) from text, a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.entities = createRequest('entities'); - -/** - * Extracts the keywords from text, a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.keywords = createRequest('keywords'); - -/** - * Tags the concepts from text, a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.concepts = createRequest('concepts'); - -/** - * Calculates the sentiment for text, a URL or HTML. - */ -AlchemyLanguageV1.prototype.sentiment = function(params, callback) { - const _params = extend({}, params); - const service = params.target || params.targets ? 'sentiment_targeted' : 'sentiment'; - if (Array.isArray(_params.targets)) { - _params.targets = _params.targets.join('|'); - } - - return createRequest(service).call(this, _params, callback); -}; -/** - * Extracts the cleaned text (removes ads, navigation, etc.) for a URL or HTML. - * if raw = true, extracts the cleaned text (removes ads, navigation, etc.). - */ -AlchemyLanguageV1.prototype.text = function(params, callback) { - const service = params && params.raw ? 'text_raw' : 'text'; - return createRequest(service).call(this, params, callback); -}; - -/** - * Extracts the authors from a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.authors = createRequest('authors'); - -/** - * Detects the language for text, a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.language = createRequest('language'); - -/** - * Extracts the title for a URL or HTML. - * - * @see http://www.alchemyapi.com/api/text/proc.html - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.title = createRequest('title'); - -/** - * Extracts the relations for text, a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.relations = createRequest('relations'); - -/** - * Categorizes the text for text, a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.category = createRequest('category'); - -/** - * Extracts the publication date from a webpage or HTML file. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.publicationDate = createRequest('publication_date'); - -/** - * Finds dates in the source text, including relative dates like "next Tuesday" - * if an anchorDate is set. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.dates = createRequest('extract_dates'); - -/** - * Detects the RSS/ATOM feeds for a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.feeds = createRequest('feeds'); - -/** - * Parses the microformats for a URL or HTML. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.microformats = createRequest('microformats'); - -/** - * Categorized through the taxonomy call for text, HTML, or a URL. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.taxonomy = createRequest('taxonomy'); - -/** - * Combines multiple API operations into a single call. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.combined = createRequest('combined'); - -/** - * Detects emotions (anger, disgust, fear, joy, and sadness) - * for text, HTML, or a URL. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.emotion = function(params, callback) { - const _params = extend({}, params); - const service = params.target || params.targets ? 'emotion_targeted' : 'emotion'; - if (Array.isArray(_params.targets)) { - _params.targets = _params.targets.join('|'); - } - - return createRequest(service).call(this, _params, callback); -}; - -/** - * Finds entities and their relationships - * for text, HTML, or a URL. - * @method - * @param {Object} params - * @param {Function} callback - */ -AlchemyLanguageV1.prototype.typedRelations = createRequest('typed_relations'); - -module.exports = AlchemyLanguageV1; diff --git a/assistant/v1.ts b/assistant/v1.ts new file mode 100644 index 0000000000..84b23e5f9b --- /dev/null +++ b/assistant/v1.ts @@ -0,0 +1,7106 @@ +/** + * (C) Copyright IBM Corp. 2018, 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * IBM OpenAPI SDK Code Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +import * as extend from 'extend'; +import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http'; +import { + AbortSignal, + Authenticator, + BaseService, + UserOptions, + getAuthenticatorFromEnvironment, + validateParams, +} from 'ibm-cloud-sdk-core'; +import { getSdkHeaders } from '../lib/common'; + +/** + * The IBM Watson™ Assistant service combines machine learning, natural language understanding, and an integrated + * dialog editor to create conversation flows between your apps and your users. + * + * The Assistant v1 API provides authoring methods your application can use to create or update a workspace. + * + * API Version: 1.0 + * See: https://cloud.ibm.com/docs/assistant + */ + +class AssistantV1 extends BaseService { + static DEFAULT_SERVICE_URL: string = 'https://api.us-south.assistant.watson.cloud.ibm.com'; + + static DEFAULT_SERVICE_NAME: string = 'assistant'; + + /** Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is + * `2021-11-27`. + */ + version: string; + + /** + * Construct a AssistantV1 object. + * + * @param {Object} options - Options for the service. + * @param {string} options.version - Release date of the API version you want to use. Specify dates in YYYY-MM-DD + * format. The current version is `2021-11-27`. + * @param {string} [options.serviceUrl] - The base URL for the service + * @param {OutgoingHttpHeaders} [options.headers] - Default headers that shall be included with every request to the service. + * @param {string} [options.serviceName] - The name of the service to configure + * @param {Authenticator} [options.authenticator] - The Authenticator object used to authenticate requests to the service. Defaults to environment if not set + * @constructor + * @returns {AssistantV1} + */ + constructor(options: UserOptions) { + options = options || {}; + + const _requiredParams = ['version']; + const _validationErrors = validateParams(options, _requiredParams, null); + if (_validationErrors) { + throw _validationErrors; + } + if (!options.serviceName) { + options.serviceName = AssistantV1.DEFAULT_SERVICE_NAME; + } + // If the caller didn't supply an authenticator, construct one from external configuration. + if (!options.authenticator) { + options.authenticator = getAuthenticatorFromEnvironment(options.serviceName); + } + super(options); + this.configureService(options.serviceName); + if (options.serviceUrl) { + this.setServiceUrl(options.serviceUrl); + } + this.version = options.version; + } + + /************************* + * message + ************************/ + + /** + * Get response to user input. + * + * Send user input to a workspace and receive a response. + * + * **Important:** This method has been superseded by the new v2 runtime API. The v2 API offers significant advantages, + * including ease of deployment, automatic state management, versioning, and search capabilities. For more + * information, see the [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-api-overview). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {MessageInput} [params.input] - An input object that includes the input text. + * @param {RuntimeIntent[]} [params.intents] - Intents to use when evaluating the user input. Include intents from the + * previous response to continue using those intents rather than trying to recognize intents in the new input. + * @param {RuntimeEntity[]} [params.entities] - Entities to use when evaluating the message. Include entities from the + * previous response to continue using those entities rather than detecting entities in the new input. + * @param {boolean} [params.alternateIntents] - Whether to return more than one intent. A value of `true` indicates + * that all matching intents are returned. + * @param {Context} [params.context] - State information for the conversation. To maintain state, include the context + * from the previous response. + * @param {OutputData} [params.output] - An output object that includes the response to the user, the dialog nodes + * that were triggered, and messages from the log. + * @param {string} [params.userId] - A string value that identifies the user who is interacting with the workspace. + * The client must provide a unique identifier for each individual end user who accesses the application. For + * user-based plans, this user ID is used to identify unique users for billing purposes. This string cannot contain + * carriage return, newline, or tab characters. If no value is specified in the input, **user_id** is automatically + * set to the value of **context.conversation_id**. + * + * **Note:** This property is the same as the **user_id** property in the context metadata. If **user_id** is + * specified in both locations in a message request, the value specified at the root is used. + * @param {boolean} [params.nodesVisitedDetails] - Whether to include additional diagnostic information about the + * dialog nodes that were visited during processing of the message. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public message( + params: AssistantV1.MessageParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'input', 'intents', 'entities', 'alternateIntents', 'context', 'output', 'userId', 'nodesVisitedDetails', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'input': _params.input, + 'intents': _params.intents, + 'entities': _params.entities, + 'alternate_intents': _params.alternateIntents, + 'context': _params.context, + 'output': _params.output, + 'user_id': _params.userId, + }; + + const query = { + 'version': this.version, + 'nodes_visited_details': _params.nodesVisitedDetails, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'message'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/message', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * bulkClassify + ************************/ + + /** + * Identify intents and entities in multiple user utterances. + * + * Send multiple user inputs to a workspace in a single request and receive information about the intents and entities + * recognized in each input. This method is useful for testing and comparing the performance of different workspaces. + * + * This method is available only with Enterprise with Data Isolation plans. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {BulkClassifyUtterance[]} [params.input] - An array of input utterances to classify. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public bulkClassify( + params: AssistantV1.BulkClassifyParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'input', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'input': _params.input, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'bulkClassify'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/bulk_classify', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * workspaces + ************************/ + + /** + * List workspaces. + * + * List the workspaces associated with a Watson Assistant service instance. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned workspaces will be sorted. To reverse the sort + * order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listWorkspaces( + params?: AssistantV1.ListWorkspacesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listWorkspaces'); + + const parameters = { + options: { + url: '/v1/workspaces', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create workspace. + * + * Create a workspace based on component objects. You must provide workspace components defining the content of the + * new workspace. + * + * **Note:** The new workspace data cannot be larger than 1.5 MB. For larger requests, use the **Create workspace + * asynchronously** method. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {string} [params.name] - The name of the workspace. This string cannot contain carriage return, newline, or + * tab characters. + * @param {string} [params.description] - The description of the workspace. This string cannot contain carriage + * return, newline, or tab characters. + * @param {string} [params.language] - The language of the workspace. + * @param {DialogNode[]} [params.dialogNodes] - An array of objects describing the dialog nodes in the workspace. + * @param {Counterexample[]} [params.counterexamples] - An array of objects defining input examples that have been + * marked as irrelevant input. + * @param {JsonObject} [params.metadata] - Any metadata related to the workspace. + * @param {boolean} [params.learningOptOut] - Whether training data from the workspace (including artifacts such as + * intents and entities) can be used by IBM for general service improvements. `true` indicates that workspace training + * data is not to be used. + * @param {WorkspaceSystemSettings} [params.systemSettings] - Global settings for the workspace. + * @param {Webhook[]} [params.webhooks] - + * @param {CreateIntent[]} [params.intents] - An array of objects defining the intents for the workspace. + * @param {CreateEntity[]} [params.entities] - An array of objects describing the entities for the workspace. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createWorkspace( + params?: AssistantV1.CreateWorkspaceParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['name', 'description', 'language', 'dialogNodes', 'counterexamples', 'metadata', 'learningOptOut', 'systemSettings', 'webhooks', 'intents', 'entities', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'language': _params.language, + 'dialog_nodes': _params.dialogNodes, + 'counterexamples': _params.counterexamples, + 'metadata': _params.metadata, + 'learning_opt_out': _params.learningOptOut, + 'system_settings': _params.systemSettings, + 'webhooks': _params.webhooks, + 'intents': _params.intents, + 'entities': _params.entities, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createWorkspace'); + + const parameters = { + options: { + url: '/v1/workspaces', + method: 'POST', + body, + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get information about a workspace. + * + * Get information about a workspace, optionally including all workspace content. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {string} [params.sort] - Indicates how the returned workspace data will be sorted. This parameter is valid + * only if **export**=`true`. Specify `sort=stable` to sort all workspace objects by unique identifier, in ascending + * alphabetical order. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getWorkspace( + params: AssistantV1.GetWorkspaceParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', '_export', 'includeAudit', 'sort', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'include_audit': _params.includeAudit, + 'sort': _params.sort, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getWorkspace'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update workspace. + * + * Update an existing workspace with new or modified data. You must provide component objects defining the content of + * the updated workspace. + * + * **Note:** The new workspace data cannot be larger than 1.5 MB. For larger requests, use the **Update workspace + * asynchronously** method. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} [params.name] - The name of the workspace. This string cannot contain carriage return, newline, or + * tab characters. + * @param {string} [params.description] - The description of the workspace. This string cannot contain carriage + * return, newline, or tab characters. + * @param {string} [params.language] - The language of the workspace. + * @param {DialogNode[]} [params.dialogNodes] - An array of objects describing the dialog nodes in the workspace. + * @param {Counterexample[]} [params.counterexamples] - An array of objects defining input examples that have been + * marked as irrelevant input. + * @param {JsonObject} [params.metadata] - Any metadata related to the workspace. + * @param {boolean} [params.learningOptOut] - Whether training data from the workspace (including artifacts such as + * intents and entities) can be used by IBM for general service improvements. `true` indicates that workspace training + * data is not to be used. + * @param {WorkspaceSystemSettings} [params.systemSettings] - Global settings for the workspace. + * @param {Webhook[]} [params.webhooks] - + * @param {CreateIntent[]} [params.intents] - An array of objects defining the intents for the workspace. + * @param {CreateEntity[]} [params.entities] - An array of objects describing the entities for the workspace. + * @param {boolean} [params.append] - Whether the new data is to be appended to the existing data in the object. If + * **append**=`false`, elements included in the new data completely replace the corresponding existing elements, + * including all subelements. For example, if the new data for a workspace includes **entities** and + * **append**=`false`, all existing entities in the workspace are discarded and replaced with the new entities. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the new + * data collide with existing elements, the update request fails. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateWorkspace( + params: AssistantV1.UpdateWorkspaceParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'name', 'description', 'language', 'dialogNodes', 'counterexamples', 'metadata', 'learningOptOut', 'systemSettings', 'webhooks', 'intents', 'entities', 'append', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'language': _params.language, + 'dialog_nodes': _params.dialogNodes, + 'counterexamples': _params.counterexamples, + 'metadata': _params.metadata, + 'learning_opt_out': _params.learningOptOut, + 'system_settings': _params.systemSettings, + 'webhooks': _params.webhooks, + 'intents': _params.intents, + 'entities': _params.entities, + }; + + const query = { + 'version': this.version, + 'append': _params.append, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateWorkspace'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete workspace. + * + * Delete a workspace from the service instance. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteWorkspace( + params: AssistantV1.DeleteWorkspaceParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteWorkspace'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create workspace asynchronously. + * + * Create a workspace asynchronously based on component objects. You must provide workspace components defining the + * content of the new workspace. + * + * A successful call to this method only initiates asynchronous creation of the workspace. The new workspace is not + * available until processing completes. To check the status of the asynchronous operation, use the **Get information + * about a workspace** method. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {string} [params.name] - The name of the workspace. This string cannot contain carriage return, newline, or + * tab characters. + * @param {string} [params.description] - The description of the workspace. This string cannot contain carriage + * return, newline, or tab characters. + * @param {string} [params.language] - The language of the workspace. + * @param {DialogNode[]} [params.dialogNodes] - An array of objects describing the dialog nodes in the workspace. + * @param {Counterexample[]} [params.counterexamples] - An array of objects defining input examples that have been + * marked as irrelevant input. + * @param {JsonObject} [params.metadata] - Any metadata related to the workspace. + * @param {boolean} [params.learningOptOut] - Whether training data from the workspace (including artifacts such as + * intents and entities) can be used by IBM for general service improvements. `true` indicates that workspace training + * data is not to be used. + * @param {WorkspaceSystemSettings} [params.systemSettings] - Global settings for the workspace. + * @param {Webhook[]} [params.webhooks] - + * @param {CreateIntent[]} [params.intents] - An array of objects defining the intents for the workspace. + * @param {CreateEntity[]} [params.entities] - An array of objects describing the entities for the workspace. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createWorkspaceAsync( + params?: AssistantV1.CreateWorkspaceAsyncParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['name', 'description', 'language', 'dialogNodes', 'counterexamples', 'metadata', 'learningOptOut', 'systemSettings', 'webhooks', 'intents', 'entities', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'language': _params.language, + 'dialog_nodes': _params.dialogNodes, + 'counterexamples': _params.counterexamples, + 'metadata': _params.metadata, + 'learning_opt_out': _params.learningOptOut, + 'system_settings': _params.systemSettings, + 'webhooks': _params.webhooks, + 'intents': _params.intents, + 'entities': _params.entities, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createWorkspaceAsync'); + + const parameters = { + options: { + url: '/v1/workspaces_async', + method: 'POST', + body, + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update workspace asynchronously. + * + * Update an existing workspace asynchronously with new or modified data. You must provide component objects defining + * the content of the updated workspace. + * + * A successful call to this method only initiates an asynchronous update of the workspace. The updated workspace is + * not available until processing completes. To check the status of the asynchronous operation, use the **Get + * information about a workspace** method. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} [params.name] - The name of the workspace. This string cannot contain carriage return, newline, or + * tab characters. + * @param {string} [params.description] - The description of the workspace. This string cannot contain carriage + * return, newline, or tab characters. + * @param {string} [params.language] - The language of the workspace. + * @param {DialogNode[]} [params.dialogNodes] - An array of objects describing the dialog nodes in the workspace. + * @param {Counterexample[]} [params.counterexamples] - An array of objects defining input examples that have been + * marked as irrelevant input. + * @param {JsonObject} [params.metadata] - Any metadata related to the workspace. + * @param {boolean} [params.learningOptOut] - Whether training data from the workspace (including artifacts such as + * intents and entities) can be used by IBM for general service improvements. `true` indicates that workspace training + * data is not to be used. + * @param {WorkspaceSystemSettings} [params.systemSettings] - Global settings for the workspace. + * @param {Webhook[]} [params.webhooks] - + * @param {CreateIntent[]} [params.intents] - An array of objects defining the intents for the workspace. + * @param {CreateEntity[]} [params.entities] - An array of objects describing the entities for the workspace. + * @param {boolean} [params.append] - Whether the new data is to be appended to the existing data in the object. If + * **append**=`false`, elements included in the new data completely replace the corresponding existing elements, + * including all subelements. For example, if the new data for a workspace includes **entities** and + * **append**=`false`, all existing entities in the workspace are discarded and replaced with the new entities. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the new + * data collide with existing elements, the update request fails. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateWorkspaceAsync( + params: AssistantV1.UpdateWorkspaceAsyncParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'name', 'description', 'language', 'dialogNodes', 'counterexamples', 'metadata', 'learningOptOut', 'systemSettings', 'webhooks', 'intents', 'entities', 'append', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'language': _params.language, + 'dialog_nodes': _params.dialogNodes, + 'counterexamples': _params.counterexamples, + 'metadata': _params.metadata, + 'learning_opt_out': _params.learningOptOut, + 'system_settings': _params.systemSettings, + 'webhooks': _params.webhooks, + 'intents': _params.intents, + 'entities': _params.entities, + }; + + const query = { + 'version': this.version, + 'append': _params.append, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateWorkspaceAsync'); + + const parameters = { + options: { + url: '/v1/workspaces_async/{workspace_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Export workspace asynchronously. + * + * Export the entire workspace asynchronously, including all workspace content. + * + * A successful call to this method only initiates an asynchronous export. The exported JSON data is not available + * until processing completes. After the initial request is submitted, you can continue to poll by calling the same + * request again and checking the value of the **status** property. When processing has completed, the request returns + * the exported JSON data. Remember that the usual rate limits apply. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {string} [params.sort] - Indicates how the returned workspace data will be sorted. Specify `sort=stable` to + * sort all workspace objects by unique identifier, in ascending alphabetical order. + * @param {boolean} [params.verbose] - Whether the response should include the `counts` property, which indicates how + * many of each component (such as intents and entities) the workspace contains. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public exportWorkspaceAsync( + params: AssistantV1.ExportWorkspaceAsyncParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'includeAudit', 'sort', 'verbose', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + 'sort': _params.sort, + 'verbose': _params.verbose, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'exportWorkspaceAsync'); + + const parameters = { + options: { + url: '/v1/workspaces_async/{workspace_id}/export', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * intents + ************************/ + + /** + * List intents. + * + * List the intents for a workspace. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned intents will be sorted. To reverse the sort order, + * prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listIntents( + params: AssistantV1.ListIntentsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', '_export', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listIntents'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create intent. + * + * Create a new intent. + * + * If you want to create multiple intents with a single API call, consider using the **[Update + * workspace](#update-workspace)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The name of the intent. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, hyphen, and dot characters. + * - It cannot begin with the reserved prefix `sys-`. + * @param {string} [params.description] - The description of the intent. This string cannot contain carriage return, + * newline, or tab characters. + * @param {Example[]} [params.examples] - An array of user input examples for the intent. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createIntent( + params: AssistantV1.CreateIntentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent']; + const _validParams = ['workspaceId', 'intent', 'description', 'examples', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'intent': _params.intent, + 'description': _params.description, + 'examples': _params.examples, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createIntent'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get intent. + * + * Get information about an intent, optionally including all intent content. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getIntent( + params: AssistantV1.GetIntentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent']; + const _validParams = ['workspaceId', 'intent', '_export', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getIntent'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update intent. + * + * Update an existing intent with new or modified data. You must provide component objects defining the content of the + * updated intent. + * + * If you want to update multiple intents with a single API call, consider using the **[Update + * workspace](#update-workspace)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {string} [params.newIntent] - The name of the intent. This string must conform to the following + * restrictions: + * - It can contain only Unicode alphanumeric, underscore, hyphen, and dot characters. + * - It cannot begin with the reserved prefix `sys-`. + * @param {string} [params.newDescription] - The description of the intent. This string cannot contain carriage + * return, newline, or tab characters. + * @param {Example[]} [params.newExamples] - An array of user input examples for the intent. + * @param {boolean} [params.append] - Whether the new data is to be appended to the existing data in the object. If + * **append**=`false`, elements included in the new data completely replace the corresponding existing elements, + * including all subelements. For example, if the new data for the intent includes **examples** and + * **append**=`false`, all existing examples for the intent are discarded and replaced with the new examples. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the new + * data collide with existing elements, the update request fails. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateIntent( + params: AssistantV1.UpdateIntentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent']; + const _validParams = ['workspaceId', 'intent', 'newIntent', 'newDescription', 'newExamples', 'append', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'intent': _params.newIntent, + 'description': _params.newDescription, + 'examples': _params.newExamples, + }; + + const query = { + 'version': this.version, + 'append': _params.append, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateIntent'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete intent. + * + * Delete an intent from a workspace. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteIntent( + params: AssistantV1.DeleteIntentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent']; + const _validParams = ['workspaceId', 'intent', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteIntent'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * examples + ************************/ + + /** + * List user input examples. + * + * List the user input examples for an intent, optionally including contextual entity mentions. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned examples will be sorted. To reverse the sort order, + * prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listExamples( + params: AssistantV1.ListExamplesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent']; + const _validParams = ['workspaceId', 'intent', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listExamples'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create user input example. + * + * Add a new user input example to an intent. + * + * If you want to add multiple examples with a single API call, consider using the **[Update intent](#update-intent)** + * method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {string} params.text - The text of a user input example. This string must conform to the following + * restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {Mention[]} [params.mentions] - An array of contextual entity mentions. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createExample( + params: AssistantV1.CreateExampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent', 'text']; + const _validParams = ['workspaceId', 'intent', 'text', 'mentions', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'text': _params.text, + 'mentions': _params.mentions, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createExample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get user input example. + * + * Get information about a user input example. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {string} params.text - The text of the user input example. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getExample( + params: AssistantV1.GetExampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent', 'text']; + const _validParams = ['workspaceId', 'intent', 'text', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + 'text': _params.text, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getExample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples/{text}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update user input example. + * + * Update the text of a user input example. + * + * If you want to update multiple examples with a single API call, consider using the **[Update + * intent](#update-intent)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {string} params.text - The text of the user input example. + * @param {string} [params.newText] - The text of the user input example. This string must conform to the following + * restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {Mention[]} [params.newMentions] - An array of contextual entity mentions. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateExample( + params: AssistantV1.UpdateExampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent', 'text']; + const _validParams = ['workspaceId', 'intent', 'text', 'newText', 'newMentions', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'text': _params.newText, + 'mentions': _params.newMentions, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + 'text': _params.text, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateExample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples/{text}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete user input example. + * + * Delete a user input example from an intent. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.intent - The intent name. + * @param {string} params.text - The text of the user input example. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteExample( + params: AssistantV1.DeleteExampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'intent', 'text']; + const _validParams = ['workspaceId', 'intent', 'text', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'intent': _params.intent, + 'text': _params.text, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteExample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples/{text}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * counterexamples + ************************/ + + /** + * List counterexamples. + * + * List the counterexamples for a workspace. Counterexamples are examples that have been marked as irrelevant input. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned counterexamples will be sorted. To reverse the sort + * order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listCounterexamples( + params: AssistantV1.ListCounterexamplesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listCounterexamples'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/counterexamples', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create counterexample. + * + * Add a new counterexample to a workspace. Counterexamples are examples that have been marked as irrelevant input. + * + * If you want to add multiple counterexamples with a single API call, consider using the **[Update + * workspace](#update-workspace)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.text - The text of a user input marked as irrelevant input. This string must conform to the + * following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createCounterexample( + params: AssistantV1.CreateCounterexampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'text']; + const _validParams = ['workspaceId', 'text', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'text': _params.text, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createCounterexample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/counterexamples', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get counterexample. + * + * Get information about a counterexample. Counterexamples are examples that have been marked as irrelevant input. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.text - The text of a user input counterexample (for example, `What are you wearing?`). + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getCounterexample( + params: AssistantV1.GetCounterexampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'text']; + const _validParams = ['workspaceId', 'text', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'text': _params.text, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getCounterexample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/counterexamples/{text}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update counterexample. + * + * Update the text of a counterexample. Counterexamples are examples that have been marked as irrelevant input. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.text - The text of a user input counterexample (for example, `What are you wearing?`). + * @param {string} [params.newText] - The text of a user input marked as irrelevant input. This string must conform to + * the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateCounterexample( + params: AssistantV1.UpdateCounterexampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'text']; + const _validParams = ['workspaceId', 'text', 'newText', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'text': _params.newText, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'text': _params.text, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateCounterexample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/counterexamples/{text}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete counterexample. + * + * Delete a counterexample from a workspace. Counterexamples are examples that have been marked as irrelevant input. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.text - The text of a user input counterexample (for example, `What are you wearing?`). + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteCounterexample( + params: AssistantV1.DeleteCounterexampleParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'text']; + const _validParams = ['workspaceId', 'text', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'text': _params.text, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteCounterexample'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/counterexamples/{text}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * entities + ************************/ + + /** + * List entities. + * + * List the entities for a workspace. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned entities will be sorted. To reverse the sort order, + * prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listEntities( + params: AssistantV1.ListEntitiesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', '_export', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listEntities'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create entity. + * + * Create a new entity, or enable a system entity. + * + * If you want to create multiple entities with a single API call, consider using the **[Update + * workspace](#update-workspace)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, and hyphen characters. + * - If you specify an entity name beginning with the reserved prefix `sys-`, it must be the name of a system entity + * that you want to enable. (Any entity content specified with the request is ignored.). + * @param {string} [params.description] - The description of the entity. This string cannot contain carriage return, + * newline, or tab characters. + * @param {JsonObject} [params.metadata] - Any metadata related to the entity. + * @param {boolean} [params.fuzzyMatch] - Whether to use fuzzy matching for the entity. + * @param {CreateValue[]} [params.values] - An array of objects describing the entity values. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createEntity( + params: AssistantV1.CreateEntityParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity']; + const _validParams = ['workspaceId', 'entity', 'description', 'metadata', 'fuzzyMatch', 'values', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'entity': _params.entity, + 'description': _params.description, + 'metadata': _params.metadata, + 'fuzzy_match': _params.fuzzyMatch, + 'values': _params.values, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createEntity'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get entity. + * + * Get information about an entity, optionally including all entity content. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getEntity( + params: AssistantV1.GetEntityParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity']; + const _validParams = ['workspaceId', 'entity', '_export', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getEntity'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update entity. + * + * Update an existing entity with new or modified data. You must provide component objects defining the content of the + * updated entity. + * + * If you want to update multiple entities with a single API call, consider using the **[Update + * workspace](#update-workspace)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} [params.newEntity] - The name of the entity. This string must conform to the following + * restrictions: + * - It can contain only Unicode alphanumeric, underscore, and hyphen characters. + * - It cannot begin with the reserved prefix `sys-`. + * @param {string} [params.newDescription] - The description of the entity. This string cannot contain carriage + * return, newline, or tab characters. + * @param {JsonObject} [params.newMetadata] - Any metadata related to the entity. + * @param {boolean} [params.newFuzzyMatch] - Whether to use fuzzy matching for the entity. + * @param {CreateValue[]} [params.newValues] - An array of objects describing the entity values. + * @param {boolean} [params.append] - Whether the new data is to be appended to the existing data in the entity. If + * **append**=`false`, elements included in the new data completely replace the corresponding existing elements, + * including all subelements. For example, if the new data for the entity includes **values** and **append**=`false`, + * all existing values for the entity are discarded and replaced with the new values. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the new + * data collide with existing elements, the update request fails. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateEntity( + params: AssistantV1.UpdateEntityParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity']; + const _validParams = ['workspaceId', 'entity', 'newEntity', 'newDescription', 'newMetadata', 'newFuzzyMatch', 'newValues', 'append', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'entity': _params.newEntity, + 'description': _params.newDescription, + 'metadata': _params.newMetadata, + 'fuzzy_match': _params.newFuzzyMatch, + 'values': _params.newValues, + }; + + const query = { + 'version': this.version, + 'append': _params.append, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateEntity'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete entity. + * + * Delete an entity from a workspace, or disable a system entity. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteEntity( + params: AssistantV1.DeleteEntityParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity']; + const _validParams = ['workspaceId', 'entity', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteEntity'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * mentions + ************************/ + + /** + * List entity mentions. + * + * List mentions for a contextual entity. An entity mention is an occurrence of a contextual entity in the context of + * an intent user input example. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listMentions( + params: AssistantV1.ListMentionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity']; + const _validParams = ['workspaceId', 'entity', '_export', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listMentions'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/mentions', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * values + ************************/ + + /** + * List entity values. + * + * List the values for an entity. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned entity values will be sorted. To reverse the sort + * order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listValues( + params: AssistantV1.ListValuesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity']; + const _validParams = ['workspaceId', 'entity', '_export', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listValues'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create entity value. + * + * Create a new value for an entity. + * + * If you want to create multiple entity values with a single API call, consider using the **[Update + * entity](#update-entity)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. This string must conform to the following + * restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {JsonObject} [params.metadata] - Any metadata related to the entity value. + * @param {string} [params.type] - Specifies the type of entity value. + * @param {string[]} [params.synonyms] - An array of synonyms for the entity value. A value can specify either + * synonyms or patterns (depending on the value type), but not both. A synonym must conform to the following + * resrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {string[]} [params.patterns] - An array of patterns for the entity value. A value can specify either + * synonyms or patterns (depending on the value type), but not both. A pattern is a regular expression; for more + * information about how to specify a pattern, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-entities#entities-create-dictionary-based). + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createValue( + params: AssistantV1.CreateValueParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value']; + const _validParams = ['workspaceId', 'entity', 'value', 'metadata', 'type', 'synonyms', 'patterns', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'value': _params.value, + 'metadata': _params.metadata, + 'type': _params.type, + 'synonyms': _params.synonyms, + 'patterns': _params.patterns, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createValue'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get entity value. + * + * Get information about an entity value. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {boolean} [params._export] - Whether to include all element content in the returned data. If + * **export**=`false`, the returned data includes only information about the element itself. If **export**=`true`, all + * content, including subelements, is included. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getValue( + params: AssistantV1.GetValueParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value']; + const _validParams = ['workspaceId', 'entity', 'value', '_export', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'export': _params._export, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getValue'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update entity value. + * + * Update an existing entity value with new or modified data. You must provide component objects defining the content + * of the updated entity value. + * + * If you want to update multiple entity values with a single API call, consider using the **[Update + * entity](#update-entity)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {string} [params.newValue] - The text of the entity value. This string must conform to the following + * restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {JsonObject} [params.newMetadata] - Any metadata related to the entity value. + * @param {string} [params.newType] - Specifies the type of entity value. + * @param {string[]} [params.newSynonyms] - An array of synonyms for the entity value. A value can specify either + * synonyms or patterns (depending on the value type), but not both. A synonym must conform to the following + * resrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {string[]} [params.newPatterns] - An array of patterns for the entity value. A value can specify either + * synonyms or patterns (depending on the value type), but not both. A pattern is a regular expression; for more + * information about how to specify a pattern, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-entities#entities-create-dictionary-based). + * @param {boolean} [params.append] - Whether the new data is to be appended to the existing data in the entity value. + * If **append**=`false`, elements included in the new data completely replace the corresponding existing elements, + * including all subelements. For example, if the new data for the entity value includes **synonyms** and + * **append**=`false`, all existing synonyms for the entity value are discarded and replaced with the new synonyms. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the new + * data collide with existing elements, the update request fails. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateValue( + params: AssistantV1.UpdateValueParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value']; + const _validParams = ['workspaceId', 'entity', 'value', 'newValue', 'newMetadata', 'newType', 'newSynonyms', 'newPatterns', 'append', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'value': _params.newValue, + 'metadata': _params.newMetadata, + 'type': _params.newType, + 'synonyms': _params.newSynonyms, + 'patterns': _params.newPatterns, + }; + + const query = { + 'version': this.version, + 'append': _params.append, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateValue'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete entity value. + * + * Delete a value from an entity. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteValue( + params: AssistantV1.DeleteValueParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value']; + const _validParams = ['workspaceId', 'entity', 'value', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteValue'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * synonyms + ************************/ + + /** + * List entity value synonyms. + * + * List the synonyms for an entity value. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned entity value synonyms will be sorted. To reverse + * the sort order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listSynonyms( + params: AssistantV1.ListSynonymsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value']; + const _validParams = ['workspaceId', 'entity', 'value', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listSynonyms'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create entity value synonym. + * + * Add a new synonym to an entity value. + * + * If you want to create multiple synonyms with a single API call, consider using the **[Update + * entity](#update-entity)** or **[Update entity value](#update-entity-value)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {string} params.synonym - The text of the synonym. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createSynonym( + params: AssistantV1.CreateSynonymParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value', 'synonym']; + const _validParams = ['workspaceId', 'entity', 'value', 'synonym', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'synonym': _params.synonym, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createSynonym'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get entity value synonym. + * + * Get information about a synonym of an entity value. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {string} params.synonym - The text of the synonym. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getSynonym( + params: AssistantV1.GetSynonymParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value', 'synonym']; + const _validParams = ['workspaceId', 'entity', 'value', 'synonym', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + 'synonym': _params.synonym, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getSynonym'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms/{synonym}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update entity value synonym. + * + * Update an existing entity value synonym with new text. + * + * If you want to update multiple synonyms with a single API call, consider using the **[Update + * entity](#update-entity)** or **[Update entity value](#update-entity-value)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {string} params.synonym - The text of the synonym. + * @param {string} [params.newSynonym] - The text of the synonym. This string must conform to the following + * restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateSynonym( + params: AssistantV1.UpdateSynonymParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value', 'synonym']; + const _validParams = ['workspaceId', 'entity', 'value', 'synonym', 'newSynonym', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'synonym': _params.newSynonym, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + 'synonym': _params.synonym, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateSynonym'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms/{synonym}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete entity value synonym. + * + * Delete a synonym from an entity value. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.entity - The name of the entity. + * @param {string} params.value - The text of the entity value. + * @param {string} params.synonym - The text of the synonym. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteSynonym( + params: AssistantV1.DeleteSynonymParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'entity', 'value', 'synonym']; + const _validParams = ['workspaceId', 'entity', 'value', 'synonym', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'entity': _params.entity, + 'value': _params.value, + 'synonym': _params.synonym, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteSynonym'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms/{synonym}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * dialogNodes + ************************/ + + /** + * List dialog nodes. + * + * List the dialog nodes for a workspace. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned dialog nodes will be sorted. To reverse the sort + * order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listDialogNodes( + params: AssistantV1.ListDialogNodesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listDialogNodes'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/dialog_nodes', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create dialog node. + * + * Create a new dialog node. + * + * If you want to create multiple dialog nodes with a single API call, consider using the **[Update + * workspace](#update-workspace)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.dialogNode - The unique ID of the dialog node. This is an internal identifier used to refer + * to the dialog node from other dialog nodes and in the diagnostic information included with message responses. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + * @param {string} [params.description] - The description of the dialog node. This string cannot contain carriage + * return, newline, or tab characters. + * @param {string} [params.conditions] - The condition that will trigger the dialog node. This string cannot contain + * carriage return, newline, or tab characters. + * @param {string} [params.parent] - The unique ID of the parent dialog node. This property is omitted if the dialog + * node has no parent. + * @param {string} [params.previousSibling] - The unique ID of the previous sibling dialog node. This property is + * omitted if the dialog node has no previous sibling. + * @param {DialogNodeOutput} [params.output] - The output of the dialog node. For more information about how to + * specify dialog node output, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overview#dialog-overview-responses). + * @param {DialogNodeContext} [params.context] - The context for the dialog node. + * @param {JsonObject} [params.metadata] - The metadata for the dialog node. + * @param {DialogNodeNextStep} [params.nextStep] - The next step to execute following this dialog node. + * @param {string} [params.title] - A human-readable name for the dialog node. If the node is included in + * disambiguation, this title is used to populate the **label** property of the corresponding suggestion in the + * `suggestion` response type (unless it is overridden by the **user_label** property). The title is also used to + * populate the **topic** property in the `connect_to_agent` response type. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + * @param {string} [params.type] - How the dialog node is processed. + * @param {string} [params.eventName] - How an `event_handler` node is processed. + * @param {string} [params.variable] - The location in the dialog context where output is stored. + * @param {DialogNodeAction[]} [params.actions] - An array of objects describing any actions to be invoked by the + * dialog node. + * @param {string} [params.digressIn] - Whether this top-level dialog node can be digressed into. + * @param {string} [params.digressOut] - Whether this dialog node can be returned to after a digression. + * @param {string} [params.digressOutSlots] - Whether the user can digress to top-level nodes while filling out slots. + * @param {string} [params.userLabel] - A label that can be displayed externally to describe the purpose of the node + * to users. If set, this label is used to identify the node in disambiguation responses (overriding the value of the + * **title** property). + * @param {boolean} [params.disambiguationOptOut] - Whether the dialog node should be excluded from disambiguation + * suggestions. Valid only when **type**=`standard` or `frame`. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createDialogNode( + params: AssistantV1.CreateDialogNodeParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'dialogNode']; + const _validParams = ['workspaceId', 'dialogNode', 'description', 'conditions', 'parent', 'previousSibling', 'output', 'context', 'metadata', 'nextStep', 'title', 'type', 'eventName', 'variable', 'actions', 'digressIn', 'digressOut', 'digressOutSlots', 'userLabel', 'disambiguationOptOut', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'dialog_node': _params.dialogNode, + 'description': _params.description, + 'conditions': _params.conditions, + 'parent': _params.parent, + 'previous_sibling': _params.previousSibling, + 'output': _params.output, + 'context': _params.context, + 'metadata': _params.metadata, + 'next_step': _params.nextStep, + 'title': _params.title, + 'type': _params.type, + 'event_name': _params.eventName, + 'variable': _params.variable, + 'actions': _params.actions, + 'digress_in': _params.digressIn, + 'digress_out': _params.digressOut, + 'digress_out_slots': _params.digressOutSlots, + 'user_label': _params.userLabel, + 'disambiguation_opt_out': _params.disambiguationOptOut, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'createDialogNode'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/dialog_nodes', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get dialog node. + * + * Get information about a dialog node. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.dialogNode - The dialog node ID (for example, `node_1_1479323581900`). + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getDialogNode( + params: AssistantV1.GetDialogNodeParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'dialogNode']; + const _validParams = ['workspaceId', 'dialogNode', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'dialog_node': _params.dialogNode, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'getDialogNode'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/dialog_nodes/{dialog_node}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update dialog node. + * + * Update an existing dialog node with new or modified data. + * + * If you want to update multiple dialog nodes with a single API call, consider using the **[Update + * workspace](#update-workspace)** method instead. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.dialogNode - The dialog node ID (for example, `node_1_1479323581900`). + * @param {string} [params.newDialogNode] - The unique ID of the dialog node. This is an internal identifier used to + * refer to the dialog node from other dialog nodes and in the diagnostic information included with message responses. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + * @param {string} [params.newDescription] - The description of the dialog node. This string cannot contain carriage + * return, newline, or tab characters. + * @param {string} [params.newConditions] - The condition that will trigger the dialog node. This string cannot + * contain carriage return, newline, or tab characters. + * @param {string} [params.newParent] - The unique ID of the parent dialog node. This property is omitted if the + * dialog node has no parent. + * @param {string} [params.newPreviousSibling] - The unique ID of the previous sibling dialog node. This property is + * omitted if the dialog node has no previous sibling. + * @param {DialogNodeOutput} [params.newOutput] - The output of the dialog node. For more information about how to + * specify dialog node output, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overview#dialog-overview-responses). + * @param {DialogNodeContext} [params.newContext] - The context for the dialog node. + * @param {JsonObject} [params.newMetadata] - The metadata for the dialog node. + * @param {DialogNodeNextStep} [params.newNextStep] - The next step to execute following this dialog node. + * @param {string} [params.newTitle] - A human-readable name for the dialog node. If the node is included in + * disambiguation, this title is used to populate the **label** property of the corresponding suggestion in the + * `suggestion` response type (unless it is overridden by the **user_label** property). The title is also used to + * populate the **topic** property in the `connect_to_agent` response type. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + * @param {string} [params.newType] - How the dialog node is processed. + * @param {string} [params.newEventName] - How an `event_handler` node is processed. + * @param {string} [params.newVariable] - The location in the dialog context where output is stored. + * @param {DialogNodeAction[]} [params.newActions] - An array of objects describing any actions to be invoked by the + * dialog node. + * @param {string} [params.newDigressIn] - Whether this top-level dialog node can be digressed into. + * @param {string} [params.newDigressOut] - Whether this dialog node can be returned to after a digression. + * @param {string} [params.newDigressOutSlots] - Whether the user can digress to top-level nodes while filling out + * slots. + * @param {string} [params.newUserLabel] - A label that can be displayed externally to describe the purpose of the + * node to users. If set, this label is used to identify the node in disambiguation responses (overriding the value of + * the **title** property). + * @param {boolean} [params.newDisambiguationOptOut] - Whether the dialog node should be excluded from disambiguation + * suggestions. Valid only when **type**=`standard` or `frame`. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateDialogNode( + params: AssistantV1.UpdateDialogNodeParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'dialogNode']; + const _validParams = ['workspaceId', 'dialogNode', 'newDialogNode', 'newDescription', 'newConditions', 'newParent', 'newPreviousSibling', 'newOutput', 'newContext', 'newMetadata', 'newNextStep', 'newTitle', 'newType', 'newEventName', 'newVariable', 'newActions', 'newDigressIn', 'newDigressOut', 'newDigressOutSlots', 'newUserLabel', 'newDisambiguationOptOut', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'dialog_node': _params.newDialogNode, + 'description': _params.newDescription, + 'conditions': _params.newConditions, + 'parent': _params.newParent, + 'previous_sibling': _params.newPreviousSibling, + 'output': _params.newOutput, + 'context': _params.newContext, + 'metadata': _params.newMetadata, + 'next_step': _params.newNextStep, + 'title': _params.newTitle, + 'type': _params.newType, + 'event_name': _params.newEventName, + 'variable': _params.newVariable, + 'actions': _params.newActions, + 'digress_in': _params.newDigressIn, + 'digress_out': _params.newDigressOut, + 'digress_out_slots': _params.newDigressOutSlots, + 'user_label': _params.newUserLabel, + 'disambiguation_opt_out': _params.newDisambiguationOptOut, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'dialog_node': _params.dialogNode, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'updateDialogNode'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/dialog_nodes/{dialog_node}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete dialog node. + * + * Delete a dialog node from a workspace. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} params.dialogNode - The dialog node ID (for example, `node_1_1479323581900`). + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteDialogNode( + params: AssistantV1.DeleteDialogNodeParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId', 'dialogNode']; + const _validParams = ['workspaceId', 'dialogNode', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'workspace_id': _params.workspaceId, + 'dialog_node': _params.dialogNode, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteDialogNode'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/dialog_nodes/{dialog_node}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * logs + ************************/ + + /** + * List log events in a workspace. + * + * List the events from the log of a specific workspace. + * + * This method requires Manager access. + * + * **Note:** If you use the **cursor** parameter to retrieve results one page at a time, subsequent requests must be + * no more than 5 minutes apart. Any returned value for the **cursor** parameter becomes invalid after 5 minutes. For + * more information about using pagination, see [Pagination](#pagination). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.workspaceId - Unique identifier of the workspace. + * @param {string} [params.sort] - How to sort the returned log events. You can sort by **request_timestamp**. To + * reverse the sort order, prefix the parameter value with a minus sign (`-`). + * @param {string} [params.filter] - A cacheable parameter that limits the results to those matching the specified + * filter. For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-filter-reference#filter-reference). + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * + * **Note:** If the API is not returning your data, try lowering the page_limit value. + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listLogs( + params: AssistantV1.ListLogsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['workspaceId']; + const _validParams = ['workspaceId', 'sort', 'filter', 'pageLimit', 'cursor', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'sort': _params.sort, + 'filter': _params.filter, + 'page_limit': _params.pageLimit, + 'cursor': _params.cursor, + }; + + const path = { + 'workspace_id': _params.workspaceId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listLogs'); + + const parameters = { + options: { + url: '/v1/workspaces/{workspace_id}/logs', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * List log events in all workspaces. + * + * List the events from the logs of all workspaces in the service instance. + * + * **Note:** If you use the **cursor** parameter to retrieve results one page at a time, subsequent requests must be + * no more than 5 minutes apart. Any returned value for the **cursor** parameter becomes invalid after 5 minutes. For + * more information about using pagination, see [Pagination](#pagination). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.filter - A cacheable parameter that limits the results to those matching the specified + * filter. You must specify a filter query that includes a value for `language`, as well as a value for + * `request.context.system.assistant_id`, `workspace_id`, or `request.context.metadata.deployment`. These required + * filters must be specified using the exact match (`::`) operator. For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-filter-reference#filter-reference). + * @param {string} [params.sort] - How to sort the returned log events. You can sort by **request_timestamp**. To + * reverse the sort order, prefix the parameter value with a minus sign (`-`). + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listAllLogs( + params: AssistantV1.ListAllLogsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['filter']; + const _validParams = ['filter', 'sort', 'pageLimit', 'cursor', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'filter': _params.filter, + 'sort': _params.sort, + 'page_limit': _params.pageLimit, + 'cursor': _params.cursor, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'listAllLogs'); + + const parameters = { + options: { + url: '/v1/logs', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * userData + ************************/ + + /** + * Delete labeled data. + * + * Deletes all data associated with a specified customer ID. The method has no effect if no data is associated with + * the customer ID. + * + * You associate a customer ID with data by passing the `X-Watson-Metadata` header with a request that passes data. + * For more information about personal data and customer IDs, see [Information + * security](https://cloud.ibm.com/docs/assistant?topic=assistant-information-security#information-security). + * + * **Note:** This operation is intended only for deleting data associated with a single specific customer, not for + * deleting data associated with multiple customers or for any other purpose. For more information, see [Labeling and + * deleting data in Watson + * Assistant](https://cloud.ibm.com/docs/assistant?topic=assistant-information-security#information-security-gdpr-wa). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.customerId - The customer ID for which all data is to be deleted. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteUserData( + params: AssistantV1.DeleteUserDataParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['customerId']; + const _validParams = ['customerId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'customer_id': _params.customerId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteUserData'); + + const parameters = { + options: { + url: '/v1/user_data', + method: 'DELETE', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } +} + +/************************* + * interfaces + ************************/ + +namespace AssistantV1 { + /** Options for the `AssistantV1` constructor. */ + export interface Options extends UserOptions { + /** Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is + * `2021-11-27`. + */ + version: string; + } + + /** An operation response. */ + export interface Response { + result: T; + status: number; + statusText: string; + headers: IncomingHttpHeaders; + } + + /** The callback for a service request. */ + export type Callback = (error: any, response?: Response) => void; + + /** The body of a service request that returns no response data. */ + export interface EmptyObject {} + + /** A standard JS object, defined to avoid the limitations of `Object` and `object` */ + export interface JsonObject { + [key: string]: any; + } + + /************************* + * request interfaces + ************************/ + + interface DefaultParams { + headers?: OutgoingHttpHeaders; + signal?: AbortSignal; + } + + /** Parameters for the `message` operation. */ + export interface MessageParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** An input object that includes the input text. */ + input?: MessageInput; + /** Intents to use when evaluating the user input. Include intents from the previous response to continue using + * those intents rather than trying to recognize intents in the new input. + */ + intents?: RuntimeIntent[]; + /** Entities to use when evaluating the message. Include entities from the previous response to continue using + * those entities rather than detecting entities in the new input. + */ + entities?: RuntimeEntity[]; + /** Whether to return more than one intent. A value of `true` indicates that all matching intents are returned. */ + alternateIntents?: boolean; + /** State information for the conversation. To maintain state, include the context from the previous response. */ + context?: Context; + /** An output object that includes the response to the user, the dialog nodes that were triggered, and messages + * from the log. + */ + output?: OutputData; + /** A string value that identifies the user who is interacting with the workspace. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.conversation_id**. + * + * **Note:** This property is the same as the **user_id** property in the context metadata. If **user_id** is + * specified in both locations in a message request, the value specified at the root is used. + */ + userId?: string; + /** Whether to include additional diagnostic information about the dialog nodes that were visited during + * processing of the message. + */ + nodesVisitedDetails?: boolean; + } + + /** Parameters for the `bulkClassify` operation. */ + export interface BulkClassifyParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** An array of input utterances to classify. */ + input?: BulkClassifyUtterance[]; + } + + /** Parameters for the `listWorkspaces` operation. */ + export interface ListWorkspacesParams extends DefaultParams { + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned workspaces will be sorted. To reverse the sort order, prefix the value with + * a minus sign (`-`). + */ + sort?: ListWorkspacesConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listWorkspaces` operation. */ + export namespace ListWorkspacesConstants { + /** The attribute by which returned workspaces will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + NAME = 'name', + UPDATED = 'updated', + } + } + + /** Parameters for the `createWorkspace` operation. */ + export interface CreateWorkspaceParams extends DefaultParams { + /** The name of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The language of the workspace. */ + language?: string; + /** An array of objects describing the dialog nodes in the workspace. */ + dialogNodes?: DialogNode[]; + /** An array of objects defining input examples that have been marked as irrelevant input. */ + counterexamples?: Counterexample[]; + /** Any metadata related to the workspace. */ + metadata?: JsonObject; + /** Whether training data from the workspace (including artifacts such as intents and entities) can be used by + * IBM for general service improvements. `true` indicates that workspace training data is not to be used. + */ + learningOptOut?: boolean; + /** Global settings for the workspace. */ + systemSettings?: WorkspaceSystemSettings; + webhooks?: Webhook[]; + /** An array of objects defining the intents for the workspace. */ + intents?: CreateIntent[]; + /** An array of objects describing the entities for the workspace. */ + entities?: CreateEntity[]; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getWorkspace` operation. */ + export interface GetWorkspaceParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + /** Indicates how the returned workspace data will be sorted. This parameter is valid only if **export**=`true`. + * Specify `sort=stable` to sort all workspace objects by unique identifier, in ascending alphabetical order. + */ + sort?: GetWorkspaceConstants.Sort | string; + } + + /** Constants for the `getWorkspace` operation. */ + export namespace GetWorkspaceConstants { + /** Indicates how the returned workspace data will be sorted. This parameter is valid only if **export**=`true`. Specify `sort=stable` to sort all workspace objects by unique identifier, in ascending alphabetical order. */ + export enum Sort { + STABLE = 'stable', + } + } + + /** Parameters for the `updateWorkspace` operation. */ + export interface UpdateWorkspaceParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The language of the workspace. */ + language?: string; + /** An array of objects describing the dialog nodes in the workspace. */ + dialogNodes?: DialogNode[]; + /** An array of objects defining input examples that have been marked as irrelevant input. */ + counterexamples?: Counterexample[]; + /** Any metadata related to the workspace. */ + metadata?: JsonObject; + /** Whether training data from the workspace (including artifacts such as intents and entities) can be used by + * IBM for general service improvements. `true` indicates that workspace training data is not to be used. + */ + learningOptOut?: boolean; + /** Global settings for the workspace. */ + systemSettings?: WorkspaceSystemSettings; + webhooks?: Webhook[]; + /** An array of objects defining the intents for the workspace. */ + intents?: CreateIntent[]; + /** An array of objects describing the entities for the workspace. */ + entities?: CreateEntity[]; + /** Whether the new data is to be appended to the existing data in the object. If **append**=`false`, elements + * included in the new data completely replace the corresponding existing elements, including all subelements. For + * example, if the new data for a workspace includes **entities** and **append**=`false`, all existing entities in + * the workspace are discarded and replaced with the new entities. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the + * new data collide with existing elements, the update request fails. + */ + append?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `deleteWorkspace` operation. */ + export interface DeleteWorkspaceParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + } + + /** Parameters for the `createWorkspaceAsync` operation. */ + export interface CreateWorkspaceAsyncParams extends DefaultParams { + /** The name of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The language of the workspace. */ + language?: string; + /** An array of objects describing the dialog nodes in the workspace. */ + dialogNodes?: DialogNode[]; + /** An array of objects defining input examples that have been marked as irrelevant input. */ + counterexamples?: Counterexample[]; + /** Any metadata related to the workspace. */ + metadata?: JsonObject; + /** Whether training data from the workspace (including artifacts such as intents and entities) can be used by + * IBM for general service improvements. `true` indicates that workspace training data is not to be used. + */ + learningOptOut?: boolean; + /** Global settings for the workspace. */ + systemSettings?: WorkspaceSystemSettings; + webhooks?: Webhook[]; + /** An array of objects defining the intents for the workspace. */ + intents?: CreateIntent[]; + /** An array of objects describing the entities for the workspace. */ + entities?: CreateEntity[]; + } + + /** Parameters for the `updateWorkspaceAsync` operation. */ + export interface UpdateWorkspaceAsyncParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The language of the workspace. */ + language?: string; + /** An array of objects describing the dialog nodes in the workspace. */ + dialogNodes?: DialogNode[]; + /** An array of objects defining input examples that have been marked as irrelevant input. */ + counterexamples?: Counterexample[]; + /** Any metadata related to the workspace. */ + metadata?: JsonObject; + /** Whether training data from the workspace (including artifacts such as intents and entities) can be used by + * IBM for general service improvements. `true` indicates that workspace training data is not to be used. + */ + learningOptOut?: boolean; + /** Global settings for the workspace. */ + systemSettings?: WorkspaceSystemSettings; + webhooks?: Webhook[]; + /** An array of objects defining the intents for the workspace. */ + intents?: CreateIntent[]; + /** An array of objects describing the entities for the workspace. */ + entities?: CreateEntity[]; + /** Whether the new data is to be appended to the existing data in the object. If **append**=`false`, elements + * included in the new data completely replace the corresponding existing elements, including all subelements. For + * example, if the new data for a workspace includes **entities** and **append**=`false`, all existing entities in + * the workspace are discarded and replaced with the new entities. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the + * new data collide with existing elements, the update request fails. + */ + append?: boolean; + } + + /** Parameters for the `exportWorkspaceAsync` operation. */ + export interface ExportWorkspaceAsyncParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + /** Indicates how the returned workspace data will be sorted. Specify `sort=stable` to sort all workspace + * objects by unique identifier, in ascending alphabetical order. + */ + sort?: ExportWorkspaceAsyncConstants.Sort | string; + /** Whether the response should include the `counts` property, which indicates how many of each component (such + * as intents and entities) the workspace contains. + */ + verbose?: boolean; + } + + /** Constants for the `exportWorkspaceAsync` operation. */ + export namespace ExportWorkspaceAsyncConstants { + /** Indicates how the returned workspace data will be sorted. Specify `sort=stable` to sort all workspace objects by unique identifier, in ascending alphabetical order. */ + export enum Sort { + STABLE = 'stable', + } + } + + /** Parameters for the `listIntents` operation. */ + export interface ListIntentsParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned intents will be sorted. To reverse the sort order, prefix the value with a + * minus sign (`-`). + */ + sort?: ListIntentsConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listIntents` operation. */ + export namespace ListIntentsConstants { + /** The attribute by which returned intents will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + INTENT = 'intent', + UPDATED = 'updated', + } + } + + /** Parameters for the `createIntent` operation. */ + export interface CreateIntentParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the intent. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, hyphen, and dot characters. + * - It cannot begin with the reserved prefix `sys-`. + */ + intent: string; + /** The description of the intent. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** An array of user input examples for the intent. */ + examples?: Example[]; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getIntent` operation. */ + export interface GetIntentParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateIntent` operation. */ + export interface UpdateIntentParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + /** The name of the intent. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, hyphen, and dot characters. + * - It cannot begin with the reserved prefix `sys-`. + */ + newIntent?: string; + /** The description of the intent. This string cannot contain carriage return, newline, or tab characters. */ + newDescription?: string; + /** An array of user input examples for the intent. */ + newExamples?: Example[]; + /** Whether the new data is to be appended to the existing data in the object. If **append**=`false`, elements + * included in the new data completely replace the corresponding existing elements, including all subelements. For + * example, if the new data for the intent includes **examples** and **append**=`false`, all existing examples for + * the intent are discarded and replaced with the new examples. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the + * new data collide with existing elements, the update request fails. + */ + append?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `deleteIntent` operation. */ + export interface DeleteIntentParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + } + + /** Parameters for the `listExamples` operation. */ + export interface ListExamplesParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned examples will be sorted. To reverse the sort order, prefix the value with a + * minus sign (`-`). + */ + sort?: ListExamplesConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listExamples` operation. */ + export namespace ListExamplesConstants { + /** The attribute by which returned examples will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + TEXT = 'text', + UPDATED = 'updated', + } + } + + /** Parameters for the `createExample` operation. */ + export interface CreateExampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + /** The text of a user input example. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + text: string; + /** An array of contextual entity mentions. */ + mentions?: Mention[]; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getExample` operation. */ + export interface GetExampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + /** The text of the user input example. */ + text: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateExample` operation. */ + export interface UpdateExampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + /** The text of the user input example. */ + text: string; + /** The text of the user input example. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + newText?: string; + /** An array of contextual entity mentions. */ + newMentions?: Mention[]; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `deleteExample` operation. */ + export interface DeleteExampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The intent name. */ + intent: string; + /** The text of the user input example. */ + text: string; + } + + /** Parameters for the `listCounterexamples` operation. */ + export interface ListCounterexamplesParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned counterexamples will be sorted. To reverse the sort order, prefix the value + * with a minus sign (`-`). + */ + sort?: ListCounterexamplesConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listCounterexamples` operation. */ + export namespace ListCounterexamplesConstants { + /** The attribute by which returned counterexamples will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + TEXT = 'text', + UPDATED = 'updated', + } + } + + /** Parameters for the `createCounterexample` operation. */ + export interface CreateCounterexampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The text of a user input marked as irrelevant input. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + text: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getCounterexample` operation. */ + export interface GetCounterexampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The text of a user input counterexample (for example, `What are you wearing?`). */ + text: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateCounterexample` operation. */ + export interface UpdateCounterexampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The text of a user input counterexample (for example, `What are you wearing?`). */ + text: string; + /** The text of a user input marked as irrelevant input. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + newText?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `deleteCounterexample` operation. */ + export interface DeleteCounterexampleParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The text of a user input counterexample (for example, `What are you wearing?`). */ + text: string; + } + + /** Parameters for the `listEntities` operation. */ + export interface ListEntitiesParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned entities will be sorted. To reverse the sort order, prefix the value with a + * minus sign (`-`). + */ + sort?: ListEntitiesConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listEntities` operation. */ + export namespace ListEntitiesConstants { + /** The attribute by which returned entities will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + ENTITY = 'entity', + UPDATED = 'updated', + } + } + + /** Parameters for the `createEntity` operation. */ + export interface CreateEntityParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, and hyphen characters. + * - If you specify an entity name beginning with the reserved prefix `sys-`, it must be the name of a system + * entity that you want to enable. (Any entity content specified with the request is ignored.). + */ + entity: string; + /** The description of the entity. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** Any metadata related to the entity. */ + metadata?: JsonObject; + /** Whether to use fuzzy matching for the entity. */ + fuzzyMatch?: boolean; + /** An array of objects describing the entity values. */ + values?: CreateValue[]; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getEntity` operation. */ + export interface GetEntityParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateEntity` operation. */ + export interface UpdateEntityParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The name of the entity. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, and hyphen characters. + * - It cannot begin with the reserved prefix `sys-`. + */ + newEntity?: string; + /** The description of the entity. This string cannot contain carriage return, newline, or tab characters. */ + newDescription?: string; + /** Any metadata related to the entity. */ + newMetadata?: JsonObject; + /** Whether to use fuzzy matching for the entity. */ + newFuzzyMatch?: boolean; + /** An array of objects describing the entity values. */ + newValues?: CreateValue[]; + /** Whether the new data is to be appended to the existing data in the entity. If **append**=`false`, elements + * included in the new data completely replace the corresponding existing elements, including all subelements. For + * example, if the new data for the entity includes **values** and **append**=`false`, all existing values for the + * entity are discarded and replaced with the new values. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the + * new data collide with existing elements, the update request fails. + */ + append?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `deleteEntity` operation. */ + export interface DeleteEntityParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + } + + /** Parameters for the `listMentions` operation. */ + export interface ListMentionsParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `listValues` operation. */ + export interface ListValuesParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned entity values will be sorted. To reverse the sort order, prefix the value + * with a minus sign (`-`). + */ + sort?: ListValuesConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listValues` operation. */ + export namespace ListValuesConstants { + /** The attribute by which returned entity values will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + VALUE = 'value', + UPDATED = 'updated', + } + } + + /** Parameters for the `createValue` operation. */ + export interface CreateValueParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + value: string; + /** Any metadata related to the entity value. */ + metadata?: JsonObject; + /** Specifies the type of entity value. */ + type?: CreateValueConstants.Type | string; + /** An array of synonyms for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A synonym must conform to the following resrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + synonyms?: string[]; + /** An array of patterns for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A pattern is a regular expression; for more information about how to specify a + * pattern, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-entities#entities-create-dictionary-based). + */ + patterns?: string[]; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `createValue` operation. */ + export namespace CreateValueConstants { + /** Specifies the type of entity value. */ + export enum Type { + SYNONYMS = 'synonyms', + PATTERNS = 'patterns', + } + } + + /** Parameters for the `getValue` operation. */ + export interface GetValueParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + /** Whether to include all element content in the returned data. If **export**=`false`, the returned data + * includes only information about the element itself. If **export**=`true`, all content, including subelements, is + * included. + */ + _export?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateValue` operation. */ + export interface UpdateValueParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + /** The text of the entity value. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + newValue?: string; + /** Any metadata related to the entity value. */ + newMetadata?: JsonObject; + /** Specifies the type of entity value. */ + newType?: UpdateValueConstants.Type | string; + /** An array of synonyms for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A synonym must conform to the following resrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + newSynonyms?: string[]; + /** An array of patterns for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A pattern is a regular expression; for more information about how to specify a + * pattern, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-entities#entities-create-dictionary-based). + */ + newPatterns?: string[]; + /** Whether the new data is to be appended to the existing data in the entity value. If **append**=`false`, + * elements included in the new data completely replace the corresponding existing elements, including all + * subelements. For example, if the new data for the entity value includes **synonyms** and **append**=`false`, all + * existing synonyms for the entity value are discarded and replaced with the new synonyms. + * + * If **append**=`true`, existing elements are preserved, and the new elements are added. If any elements in the + * new data collide with existing elements, the update request fails. + */ + append?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `updateValue` operation. */ + export namespace UpdateValueConstants { + /** Specifies the type of entity value. */ + export enum Type { + SYNONYMS = 'synonyms', + PATTERNS = 'patterns', + } + } + + /** Parameters for the `deleteValue` operation. */ + export interface DeleteValueParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + } + + /** Parameters for the `listSynonyms` operation. */ + export interface ListSynonymsParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned entity value synonyms will be sorted. To reverse the sort order, prefix the + * value with a minus sign (`-`). + */ + sort?: ListSynonymsConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listSynonyms` operation. */ + export namespace ListSynonymsConstants { + /** The attribute by which returned entity value synonyms will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + SYNONYM = 'synonym', + UPDATED = 'updated', + } + } + + /** Parameters for the `createSynonym` operation. */ + export interface CreateSynonymParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + /** The text of the synonym. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + synonym: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getSynonym` operation. */ + export interface GetSynonymParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + /** The text of the synonym. */ + synonym: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateSynonym` operation. */ + export interface UpdateSynonymParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + /** The text of the synonym. */ + synonym: string; + /** The text of the synonym. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + newSynonym?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `deleteSynonym` operation. */ + export interface DeleteSynonymParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The name of the entity. */ + entity: string; + /** The text of the entity value. */ + value: string; + /** The text of the synonym. */ + synonym: string; + } + + /** Parameters for the `listDialogNodes` operation. */ + export interface ListDialogNodesParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned dialog nodes will be sorted. To reverse the sort order, prefix the value + * with a minus sign (`-`). + */ + sort?: ListDialogNodesConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listDialogNodes` operation. */ + export namespace ListDialogNodesConstants { + /** The attribute by which returned dialog nodes will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + DIALOG_NODE = 'dialog_node', + UPDATED = 'updated', + } + } + + /** Parameters for the `createDialogNode` operation. */ + export interface CreateDialogNodeParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The unique ID of the dialog node. This is an internal identifier used to refer to the dialog node from other + * dialog nodes and in the diagnostic information included with message responses. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + */ + dialogNode: string; + /** The description of the dialog node. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The condition that will trigger the dialog node. This string cannot contain carriage return, newline, or tab + * characters. + */ + conditions?: string; + /** The unique ID of the parent dialog node. This property is omitted if the dialog node has no parent. */ + parent?: string; + /** The unique ID of the previous sibling dialog node. This property is omitted if the dialog node has no + * previous sibling. + */ + previousSibling?: string; + /** The output of the dialog node. For more information about how to specify dialog node output, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overview#dialog-overview-responses). + */ + output?: DialogNodeOutput; + /** The context for the dialog node. */ + context?: DialogNodeContext; + /** The metadata for the dialog node. */ + metadata?: JsonObject; + /** The next step to execute following this dialog node. */ + nextStep?: DialogNodeNextStep; + /** A human-readable name for the dialog node. If the node is included in disambiguation, this title is used to + * populate the **label** property of the corresponding suggestion in the `suggestion` response type (unless it is + * overridden by the **user_label** property). The title is also used to populate the **topic** property in the + * `connect_to_agent` response type. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + */ + title?: string; + /** How the dialog node is processed. */ + type?: CreateDialogNodeConstants.Type | string; + /** How an `event_handler` node is processed. */ + eventName?: CreateDialogNodeConstants.EventName | string; + /** The location in the dialog context where output is stored. */ + variable?: string; + /** An array of objects describing any actions to be invoked by the dialog node. */ + actions?: DialogNodeAction[]; + /** Whether this top-level dialog node can be digressed into. */ + digressIn?: CreateDialogNodeConstants.DigressIn | string; + /** Whether this dialog node can be returned to after a digression. */ + digressOut?: CreateDialogNodeConstants.DigressOut | string; + /** Whether the user can digress to top-level nodes while filling out slots. */ + digressOutSlots?: CreateDialogNodeConstants.DigressOutSlots | string; + /** A label that can be displayed externally to describe the purpose of the node to users. If set, this label is + * used to identify the node in disambiguation responses (overriding the value of the **title** property). + */ + userLabel?: string; + /** Whether the dialog node should be excluded from disambiguation suggestions. Valid only when + * **type**=`standard` or `frame`. + */ + disambiguationOptOut?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `createDialogNode` operation. */ + export namespace CreateDialogNodeConstants { + /** How the dialog node is processed. */ + export enum Type { + STANDARD = 'standard', + EVENT_HANDLER = 'event_handler', + FRAME = 'frame', + SLOT = 'slot', + RESPONSE_CONDITION = 'response_condition', + FOLDER = 'folder', + } + /** How an `event_handler` node is processed. */ + export enum EventName { + FOCUS = 'focus', + INPUT = 'input', + FILLED = 'filled', + VALIDATE = 'validate', + FILLED_MULTIPLE = 'filled_multiple', + GENERIC = 'generic', + NOMATCH = 'nomatch', + NOMATCH_RESPONSES_DEPLETED = 'nomatch_responses_depleted', + DIGRESSION_RETURN_PROMPT = 'digression_return_prompt', + } + /** Whether this top-level dialog node can be digressed into. */ + export enum DigressIn { + NOT_AVAILABLE = 'not_available', + RETURNS = 'returns', + DOES_NOT_RETURN = 'does_not_return', + } + /** Whether this dialog node can be returned to after a digression. */ + export enum DigressOut { + ALLOW_RETURNING = 'allow_returning', + ALLOW_ALL = 'allow_all', + ALLOW_ALL_NEVER_RETURN = 'allow_all_never_return', + } + /** Whether the user can digress to top-level nodes while filling out slots. */ + export enum DigressOutSlots { + NOT_ALLOWED = 'not_allowed', + ALLOW_RETURNING = 'allow_returning', + ALLOW_ALL = 'allow_all', + } + } + + /** Parameters for the `getDialogNode` operation. */ + export interface GetDialogNodeParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The dialog node ID (for example, `node_1_1479323581900`). */ + dialogNode: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateDialogNode` operation. */ + export interface UpdateDialogNodeParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The dialog node ID (for example, `node_1_1479323581900`). */ + dialogNode: string; + /** The unique ID of the dialog node. This is an internal identifier used to refer to the dialog node from other + * dialog nodes and in the diagnostic information included with message responses. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + */ + newDialogNode?: string; + /** The description of the dialog node. This string cannot contain carriage return, newline, or tab characters. */ + newDescription?: string; + /** The condition that will trigger the dialog node. This string cannot contain carriage return, newline, or tab + * characters. + */ + newConditions?: string; + /** The unique ID of the parent dialog node. This property is omitted if the dialog node has no parent. */ + newParent?: string; + /** The unique ID of the previous sibling dialog node. This property is omitted if the dialog node has no + * previous sibling. + */ + newPreviousSibling?: string; + /** The output of the dialog node. For more information about how to specify dialog node output, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overview#dialog-overview-responses). + */ + newOutput?: DialogNodeOutput; + /** The context for the dialog node. */ + newContext?: DialogNodeContext; + /** The metadata for the dialog node. */ + newMetadata?: JsonObject; + /** The next step to execute following this dialog node. */ + newNextStep?: DialogNodeNextStep; + /** A human-readable name for the dialog node. If the node is included in disambiguation, this title is used to + * populate the **label** property of the corresponding suggestion in the `suggestion` response type (unless it is + * overridden by the **user_label** property). The title is also used to populate the **topic** property in the + * `connect_to_agent` response type. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + */ + newTitle?: string; + /** How the dialog node is processed. */ + newType?: UpdateDialogNodeConstants.Type | string; + /** How an `event_handler` node is processed. */ + newEventName?: UpdateDialogNodeConstants.EventName | string; + /** The location in the dialog context where output is stored. */ + newVariable?: string; + /** An array of objects describing any actions to be invoked by the dialog node. */ + newActions?: DialogNodeAction[]; + /** Whether this top-level dialog node can be digressed into. */ + newDigressIn?: UpdateDialogNodeConstants.DigressIn | string; + /** Whether this dialog node can be returned to after a digression. */ + newDigressOut?: UpdateDialogNodeConstants.DigressOut | string; + /** Whether the user can digress to top-level nodes while filling out slots. */ + newDigressOutSlots?: UpdateDialogNodeConstants.DigressOutSlots | string; + /** A label that can be displayed externally to describe the purpose of the node to users. If set, this label is + * used to identify the node in disambiguation responses (overriding the value of the **title** property). + */ + newUserLabel?: string; + /** Whether the dialog node should be excluded from disambiguation suggestions. Valid only when + * **type**=`standard` or `frame`. + */ + newDisambiguationOptOut?: boolean; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `updateDialogNode` operation. */ + export namespace UpdateDialogNodeConstants { + /** How the dialog node is processed. */ + export enum Type { + STANDARD = 'standard', + EVENT_HANDLER = 'event_handler', + FRAME = 'frame', + SLOT = 'slot', + RESPONSE_CONDITION = 'response_condition', + FOLDER = 'folder', + } + /** How an `event_handler` node is processed. */ + export enum EventName { + FOCUS = 'focus', + INPUT = 'input', + FILLED = 'filled', + VALIDATE = 'validate', + FILLED_MULTIPLE = 'filled_multiple', + GENERIC = 'generic', + NOMATCH = 'nomatch', + NOMATCH_RESPONSES_DEPLETED = 'nomatch_responses_depleted', + DIGRESSION_RETURN_PROMPT = 'digression_return_prompt', + } + /** Whether this top-level dialog node can be digressed into. */ + export enum DigressIn { + NOT_AVAILABLE = 'not_available', + RETURNS = 'returns', + DOES_NOT_RETURN = 'does_not_return', + } + /** Whether this dialog node can be returned to after a digression. */ + export enum DigressOut { + ALLOW_RETURNING = 'allow_returning', + ALLOW_ALL = 'allow_all', + ALLOW_ALL_NEVER_RETURN = 'allow_all_never_return', + } + /** Whether the user can digress to top-level nodes while filling out slots. */ + export enum DigressOutSlots { + NOT_ALLOWED = 'not_allowed', + ALLOW_RETURNING = 'allow_returning', + ALLOW_ALL = 'allow_all', + } + } + + /** Parameters for the `deleteDialogNode` operation. */ + export interface DeleteDialogNodeParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** The dialog node ID (for example, `node_1_1479323581900`). */ + dialogNode: string; + } + + /** Parameters for the `listLogs` operation. */ + export interface ListLogsParams extends DefaultParams { + /** Unique identifier of the workspace. */ + workspaceId: string; + /** How to sort the returned log events. You can sort by **request_timestamp**. To reverse the sort order, + * prefix the parameter value with a minus sign (`-`). + */ + sort?: string; + /** A cacheable parameter that limits the results to those matching the specified filter. For more information, + * see the [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-filter-reference#filter-reference). + */ + filter?: string; + /** The number of records to return in each page of results. + * + * **Note:** If the API is not returning your data, try lowering the page_limit value. + */ + pageLimit?: number; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + } + + /** Parameters for the `listAllLogs` operation. */ + export interface ListAllLogsParams extends DefaultParams { + /** A cacheable parameter that limits the results to those matching the specified filter. You must specify a + * filter query that includes a value for `language`, as well as a value for `request.context.system.assistant_id`, + * `workspace_id`, or `request.context.metadata.deployment`. These required filters must be specified using the + * exact match (`::`) operator. For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-filter-reference#filter-reference). + */ + filter: string; + /** How to sort the returned log events. You can sort by **request_timestamp**. To reverse the sort order, + * prefix the parameter value with a minus sign (`-`). + */ + sort?: string; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + } + + /** Parameters for the `deleteUserData` operation. */ + export interface DeleteUserDataParams extends DefaultParams { + /** The customer ID for which all data is to be deleted. */ + customerId: string; + } + + /************************* + * model interfaces + ************************/ + + /** + * AgentAvailabilityMessage. + */ + export interface AgentAvailabilityMessage { + /** The text of the message. */ + message?: string; + } + + /** + * BulkClassifyOutput. + */ + export interface BulkClassifyOutput { + /** The user input utterance to classify. */ + input?: BulkClassifyUtterance; + /** An array of entities identified in the utterance. */ + entities?: RuntimeEntity[]; + /** An array of intents recognized in the utterance. */ + intents?: RuntimeIntent[]; + } + + /** + * BulkClassifyResponse. + */ + export interface BulkClassifyResponse { + /** An array of objects that contain classification information for the submitted input utterances. */ + output?: BulkClassifyOutput[]; + } + + /** + * The user input utterance to classify. + */ + export interface BulkClassifyUtterance { + /** The text of the input utterance. */ + text: string; + } + + /** + * A recognized capture group for a pattern-based entity. + */ + export interface CaptureGroup { + /** A recognized capture group for the entity. */ + group: string; + /** Zero-based character offsets that indicate where the entity value begins and ends in the input text. */ + location?: number[]; + } + + /** + * Information used by an integration to transfer the conversation to a different channel. + */ + export interface ChannelTransferInfo { + /** An object specifying target channels available for the transfer. Each property of this object represents an + * available transfer target. Currently, the only supported property is **chat**, representing the web chat + * integration. + */ + target: ChannelTransferTarget; + } + + /** + * An object specifying target channels available for the transfer. Each property of this object represents an + * available transfer target. Currently, the only supported property is **chat**, representing the web chat + * integration. + */ + export interface ChannelTransferTarget { + /** Information for transferring to the web chat integration. */ + chat?: ChannelTransferTargetChat; + } + + /** + * Information for transferring to the web chat integration. + */ + export interface ChannelTransferTargetChat { + /** The URL of the target web chat. */ + url?: string; + } + + /** + * State information for the conversation. To maintain state, include the context from the previous response. + * + * This type supports additional properties of type any. Any context variable. + */ + export interface Context { + /** The unique identifier of the conversation. The conversation ID cannot contain any of the following + * characters: `+` `=` `&&` `||` `>` `<` `!` `(` `)` `{` `}` `[` `]` `^` `"` `~` `*` `?` `:` `\` `/`. + */ + conversation_id?: string; + /** For internal use only. */ + system?: JsonObject; + /** Metadata related to the message. */ + metadata?: MessageContextMetadata; + + /** + * Context accepts additional properties of type any. Any context variable. + */ + [propName: string]: any; + } + + /** + * Counterexample. + */ + export interface Counterexample { + /** The text of a user input marked as irrelevant input. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + text: string; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + + /** + * CounterexampleCollection. + */ + export interface CounterexampleCollection { + /** An array of objects describing the examples marked as irrelevant input. */ + counterexamples: Counterexample[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * CreateEntity. + */ + export interface CreateEntity { + /** The name of the entity. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, and hyphen characters. + * - If you specify an entity name beginning with the reserved prefix `sys-`, it must be the name of a system + * entity that you want to enable. (Any entity content specified with the request is ignored.). + */ + entity: string; + /** The description of the entity. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** Any metadata related to the entity. */ + metadata?: JsonObject; + /** Whether to use fuzzy matching for the entity. */ + fuzzy_match?: boolean; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + /** An array of objects describing the entity values. */ + values?: CreateValue[]; + } + + /** + * CreateIntent. + */ + export interface CreateIntent { + /** The name of the intent. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, hyphen, and dot characters. + * - It cannot begin with the reserved prefix `sys-`. + */ + intent: string; + /** The description of the intent. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + /** An array of user input examples for the intent. */ + examples?: Example[]; + } + + /** + * CreateValue. + */ + export interface CreateValue { + /** The text of the entity value. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + value: string; + /** Any metadata related to the entity value. */ + metadata?: JsonObject; + /** Specifies the type of entity value. */ + type?: CreateValue.Constants.Type | string; + /** An array of synonyms for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A synonym must conform to the following resrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + synonyms?: string[]; + /** An array of patterns for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A pattern is a regular expression; for more information about how to specify a + * pattern, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-entities#entities-create-dictionary-based). + */ + patterns?: string[]; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + export namespace CreateValue { + export namespace Constants { + /** Specifies the type of entity value. */ + export enum Type { + SYNONYMS = 'synonyms', + PATTERNS = 'patterns', + } + } + } + + /** + * DialogNode. + */ + export interface DialogNode { + /** The unique ID of the dialog node. This is an internal identifier used to refer to the dialog node from other + * dialog nodes and in the diagnostic information included with message responses. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + */ + dialog_node: string; + /** The description of the dialog node. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The condition that will trigger the dialog node. This string cannot contain carriage return, newline, or tab + * characters. + */ + conditions?: string; + /** The unique ID of the parent dialog node. This property is omitted if the dialog node has no parent. */ + parent?: string; + /** The unique ID of the previous sibling dialog node. This property is omitted if the dialog node has no + * previous sibling. + */ + previous_sibling?: string; + /** The output of the dialog node. For more information about how to specify dialog node output, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overview#dialog-overview-responses). + */ + output?: DialogNodeOutput; + /** The context for the dialog node. */ + context?: DialogNodeContext; + /** The metadata for the dialog node. */ + metadata?: JsonObject; + /** The next step to execute following this dialog node. */ + next_step?: DialogNodeNextStep; + /** A human-readable name for the dialog node. If the node is included in disambiguation, this title is used to + * populate the **label** property of the corresponding suggestion in the `suggestion` response type (unless it is + * overridden by the **user_label** property). The title is also used to populate the **topic** property in the + * `connect_to_agent` response type. + * + * This string can contain only Unicode alphanumeric, space, underscore, hyphen, and dot characters. + */ + title?: string; + /** How the dialog node is processed. */ + type?: DialogNode.Constants.Type | string; + /** How an `event_handler` node is processed. */ + event_name?: DialogNode.Constants.EventName | string; + /** The location in the dialog context where output is stored. */ + variable?: string; + /** An array of objects describing any actions to be invoked by the dialog node. */ + actions?: DialogNodeAction[]; + /** Whether this top-level dialog node can be digressed into. */ + digress_in?: DialogNode.Constants.DigressIn | string; + /** Whether this dialog node can be returned to after a digression. */ + digress_out?: DialogNode.Constants.DigressOut | string; + /** Whether the user can digress to top-level nodes while filling out slots. */ + digress_out_slots?: DialogNode.Constants.DigressOutSlots | string; + /** A label that can be displayed externally to describe the purpose of the node to users. If set, this label is + * used to identify the node in disambiguation responses (overriding the value of the **title** property). + */ + user_label?: string; + /** Whether the dialog node should be excluded from disambiguation suggestions. Valid only when + * **type**=`standard` or `frame`. + */ + disambiguation_opt_out?: boolean; + /** For internal use only. */ + disabled?: boolean; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + export namespace DialogNode { + export namespace Constants { + /** How the dialog node is processed. */ + export enum Type { + STANDARD = 'standard', + EVENT_HANDLER = 'event_handler', + FRAME = 'frame', + SLOT = 'slot', + RESPONSE_CONDITION = 'response_condition', + FOLDER = 'folder', + } + /** How an `event_handler` node is processed. */ + export enum EventName { + FOCUS = 'focus', + INPUT = 'input', + FILLED = 'filled', + VALIDATE = 'validate', + FILLED_MULTIPLE = 'filled_multiple', + GENERIC = 'generic', + NOMATCH = 'nomatch', + NOMATCH_RESPONSES_DEPLETED = 'nomatch_responses_depleted', + DIGRESSION_RETURN_PROMPT = 'digression_return_prompt', + } + /** Whether this top-level dialog node can be digressed into. */ + export enum DigressIn { + NOT_AVAILABLE = 'not_available', + RETURNS = 'returns', + DOES_NOT_RETURN = 'does_not_return', + } + /** Whether this dialog node can be returned to after a digression. */ + export enum DigressOut { + ALLOW_RETURNING = 'allow_returning', + ALLOW_ALL = 'allow_all', + ALLOW_ALL_NEVER_RETURN = 'allow_all_never_return', + } + /** Whether the user can digress to top-level nodes while filling out slots. */ + export enum DigressOutSlots { + NOT_ALLOWED = 'not_allowed', + ALLOW_RETURNING = 'allow_returning', + ALLOW_ALL = 'allow_all', + } + } + } + + /** + * DialogNodeAction. + */ + export interface DialogNodeAction { + /** The name of the action. */ + name: string; + /** The type of action to invoke. */ + type?: DialogNodeAction.Constants.Type | string; + /** A map of key/value pairs to be provided to the action. */ + parameters?: JsonObject; + /** The location in the dialog context where the result of the action is stored. */ + result_variable: string; + /** The name of the context variable that the client application will use to pass in credentials for the action. */ + credentials?: string; + } + export namespace DialogNodeAction { + export namespace Constants { + /** The type of action to invoke. */ + export enum Type { + CLIENT = 'client', + SERVER = 'server', + CLOUD_FUNCTION = 'cloud_function', + WEB_ACTION = 'web_action', + WEBHOOK = 'webhook', + } + } + } + + /** + * An array of dialog nodes. + */ + export interface DialogNodeCollection { + /** An array of objects describing the dialog nodes defined for the workspace. */ + dialog_nodes: DialogNode[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * The context for the dialog node. + * + * This type supports additional properties of type any. Any context variable. + */ + export interface DialogNodeContext { + /** Context data intended for specific integrations. */ + integrations?: JsonObject; + + /** + * DialogNodeContext accepts additional properties of type any. Any context variable. + */ + [propName: string]: any; + } + + /** + * The next step to execute following this dialog node. + */ + export interface DialogNodeNextStep { + /** What happens after the dialog node completes. The valid values depend on the node type: + * - The following values are valid for any node: + * - `get_user_input` + * - `skip_user_input` + * - `jump_to` + * - If the node is of type `event_handler` and its parent node is of type `slot` or `frame`, additional values are + * also valid: + * - if **event_name**=`filled` and the type of the parent node is `slot`: + * - `reprompt` + * - `skip_all_slots` + * - if **event_name**=`nomatch` and the type of the parent node is `slot`: + * - `reprompt` + * - `skip_slot` + * - `skip_all_slots` + * - if **event_name**=`generic` and the type of the parent node is `frame`: + * - `reprompt` + * - `skip_slot` + * - `skip_all_slots` + * If you specify `jump_to`, then you must also specify a value for the `dialog_node` property. + */ + behavior: DialogNodeNextStep.Constants.Behavior | string; + /** The unique ID of the dialog node to process next. This parameter is required if **behavior**=`jump_to`. */ + dialog_node?: string; + /** Which part of the dialog node to process next. */ + selector?: DialogNodeNextStep.Constants.Selector | string; + } + export namespace DialogNodeNextStep { + export namespace Constants { + /** What happens after the dialog node completes. The valid values depend on the node type: - The following values are valid for any node: - `get_user_input` - `skip_user_input` - `jump_to` - If the node is of type `event_handler` and its parent node is of type `slot` or `frame`, additional values are also valid: - if **event_name**=`filled` and the type of the parent node is `slot`: - `reprompt` - `skip_all_slots` - if **event_name**=`nomatch` and the type of the parent node is `slot`: - `reprompt` - `skip_slot` - `skip_all_slots` - if **event_name**=`generic` and the type of the parent node is `frame`: - `reprompt` - `skip_slot` - `skip_all_slots` If you specify `jump_to`, then you must also specify a value for the `dialog_node` property. */ + export enum Behavior { + GET_USER_INPUT = 'get_user_input', + SKIP_USER_INPUT = 'skip_user_input', + JUMP_TO = 'jump_to', + REPROMPT = 'reprompt', + SKIP_SLOT = 'skip_slot', + SKIP_ALL_SLOTS = 'skip_all_slots', + } + /** Which part of the dialog node to process next. */ + export enum Selector { + CONDITION = 'condition', + CLIENT = 'client', + USER_INPUT = 'user_input', + BODY = 'body', + } + } + } + + /** + * The output of the dialog node. For more information about how to specify dialog node output, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overview#dialog-overview-responses). + * + * This type supports additional properties of type any. Any additional data included in the dialog node output. + */ + export interface DialogNodeOutput { + /** An array of objects describing the output defined for the dialog node. */ + generic?: DialogNodeOutputGeneric[]; + /** Output intended for specific integrations. For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-responses-json). + */ + integrations?: JsonObject; + /** Options that modify how specified output is handled. */ + modifiers?: DialogNodeOutputModifiers; + + /** + * DialogNodeOutput accepts additional properties of type any. Any additional data included in the dialog node + * output. + */ + [propName: string]: any; + } + + /** + * Routing or other contextual information to be used by target service desk systems. + */ + export interface DialogNodeOutputConnectToAgentTransferInfo { + target?: JsonObject; + } + + /** + * DialogNodeOutputGeneric. + */ + export interface DialogNodeOutputGeneric { + } + + /** + * Options that modify how specified output is handled. + */ + export interface DialogNodeOutputModifiers { + /** Whether values in the output will overwrite output values in an array specified by previously executed + * dialog nodes. If this option is set to `false`, new values will be appended to previously specified values. + */ + overwrite?: boolean; + } + + /** + * DialogNodeOutputOptionsElement. + */ + export interface DialogNodeOutputOptionsElement { + /** The user-facing label for the option. */ + label: string; + /** An object defining the message input to be sent to the Watson Assistant service if the user selects the + * corresponding option. + */ + value: DialogNodeOutputOptionsElementValue; + } + + /** + * An object defining the message input to be sent to the Watson Assistant service if the user selects the + * corresponding option. + */ + export interface DialogNodeOutputOptionsElementValue { + /** An input object that includes the input text. */ + input?: MessageInput; + /** An array of intents to be used while processing the input. + * + * **Note:** This property is supported for backward compatibility with applications that use the v1 **Get response + * to user input** method. + */ + intents?: RuntimeIntent[]; + /** An array of entities to be used while processing the user input. + * + * **Note:** This property is supported for backward compatibility with applications that use the v1 **Get response + * to user input** method. + */ + entities?: RuntimeEntity[]; + } + + /** + * DialogNodeOutputTextValuesElement. + */ + export interface DialogNodeOutputTextValuesElement { + /** The text of a response. This string can include newline characters (`\n`), Markdown tagging, or other + * special characters, if supported by the channel. + */ + text?: string; + } + + /** + * DialogNodeVisitedDetails. + */ + export interface DialogNodeVisitedDetails { + /** The unique ID of a dialog node that was triggered during processing of the input message. */ + dialog_node?: string; + /** The title of the dialog node. */ + title?: string; + /** The conditions that trigger the dialog node. */ + conditions?: string; + } + + /** + * DialogSuggestion. + */ + export interface DialogSuggestion { + /** The user-facing label for the disambiguation option. This label is taken from the **title** or + * **user_label** property of the corresponding dialog node. + */ + label: string; + /** An object defining the message input, intents, and entities to be sent to the Watson Assistant service if + * the user selects the corresponding disambiguation option. + * + * **Note:** These properties must be included in the request body of the next message sent to the assistant. Do + * not modify or remove any of the included properties. + */ + value: DialogSuggestionValue; + /** The dialog output that will be returned from the Watson Assistant service if the user selects the + * corresponding option. + */ + output?: JsonObject; + /** The unique ID of the dialog node that the **label** property is taken from. The **label** property is + * populated using the value of the dialog node's **title** or **user_label** property. + */ + dialog_node?: string; + } + + /** + * An object defining the message input, intents, and entities to be sent to the Watson Assistant service if the user + * selects the corresponding disambiguation option. + * + * **Note:** These properties must be included in the request body of the next message sent to the assistant. Do not + * modify or remove any of the included properties. + */ + export interface DialogSuggestionValue { + /** An input object that includes the input text. */ + input?: MessageInput; + /** An array of intents to be sent along with the user input. */ + intents?: RuntimeIntent[]; + /** An array of entities to be sent along with the user input. */ + entities?: RuntimeEntity[]; + } + + /** + * Entity. + */ + export interface Entity { + /** The name of the entity. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, and hyphen characters. + * - If you specify an entity name beginning with the reserved prefix `sys-`, it must be the name of a system + * entity that you want to enable. (Any entity content specified with the request is ignored.). + */ + entity: string; + /** The description of the entity. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** Any metadata related to the entity. */ + metadata?: JsonObject; + /** Whether to use fuzzy matching for the entity. */ + fuzzy_match?: boolean; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + /** An array of objects describing the entity values. */ + values?: Value[]; + } + + /** + * An array of objects describing the entities for the workspace. + */ + export interface EntityCollection { + /** An array of objects describing the entities defined for the workspace. */ + entities: Entity[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * An object describing a contextual entity mention. + */ + export interface EntityMention { + /** The text of the user input example. */ + text: string; + /** The name of the intent. */ + intent: string; + /** An array of zero-based character offsets that indicate where the entity mentions begin and end in the input + * text. + */ + location: number[]; + } + + /** + * EntityMentionCollection. + */ + export interface EntityMentionCollection { + /** An array of objects describing the entity mentions defined for an entity. */ + examples: EntityMention[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * Example. + */ + export interface Example { + /** The text of a user input example. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + text: string; + /** An array of contextual entity mentions. */ + mentions?: Mention[]; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + + /** + * ExampleCollection. + */ + export interface ExampleCollection { + /** An array of objects describing the examples defined for the intent. */ + examples: Example[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * Intent. + */ + export interface Intent { + /** The name of the intent. This string must conform to the following restrictions: + * - It can contain only Unicode alphanumeric, underscore, hyphen, and dot characters. + * - It cannot begin with the reserved prefix `sys-`. + */ + intent: string; + /** The description of the intent. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + /** An array of user input examples for the intent. */ + examples?: Example[]; + } + + /** + * IntentCollection. + */ + export interface IntentCollection { + /** An array of objects describing the intents defined for the workspace. */ + intents: Intent[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * Log. + */ + export interface Log { + /** A request sent to the workspace, including the user input and context. */ + request: MessageRequest; + /** The response sent by the workspace, including the output text, detected intents and entities, and context. */ + response: MessageResponse; + /** A unique identifier for the logged event. */ + log_id: string; + /** The timestamp for receipt of the message. */ + request_timestamp: string; + /** The timestamp for the system response to the message. */ + response_timestamp: string; + /** The unique identifier of the workspace where the request was made. */ + workspace_id: string; + /** The language of the workspace where the message request was made. */ + language: string; + } + + /** + * LogCollection. + */ + export interface LogCollection { + /** An array of objects describing log events. */ + logs: Log[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: LogPagination; + } + + /** + * Log message details. + */ + export interface LogMessage { + /** The severity of the log message. */ + level: LogMessage.Constants.Level | string; + /** The text of the log message. */ + msg: string; + /** A code that indicates the category to which the error message belongs. */ + code: string; + /** An object that identifies the dialog element that generated the error message. */ + source?: LogMessageSource; + } + export namespace LogMessage { + export namespace Constants { + /** The severity of the log message. */ + export enum Level { + INFO = 'info', + ERROR = 'error', + WARN = 'warn', + } + } + } + + /** + * An object that identifies the dialog element that generated the error message. + */ + export interface LogMessageSource { + /** A string that indicates the type of dialog element that generated the error message. */ + type?: LogMessageSource.Constants.Type | string; + /** The unique identifier of the dialog node that generated the error message. */ + dialog_node?: string; + } + export namespace LogMessageSource { + export namespace Constants { + /** A string that indicates the type of dialog element that generated the error message. */ + export enum Type { + DIALOG_NODE = 'dialog_node', + } + } + } + + /** + * The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + export interface LogPagination { + /** The URL that will return the next page of results, if any. */ + next_url?: string; + /** Reserved for future use. */ + matched?: number; + /** A token identifying the next page of results. */ + next_cursor?: string; + } + + /** + * A mention of a contextual entity. + */ + export interface Mention { + /** The name of the entity. */ + entity: string; + /** An array of zero-based character offsets that indicate where the entity mentions begin and end in the input + * text. + */ + location: number[]; + } + + /** + * Metadata related to the message. + */ + export interface MessageContextMetadata { + /** A label identifying the deployment environment, used for filtering log data. This string cannot contain + * carriage return, newline, or tab characters. + */ + deployment?: string; + /** A string value that identifies the user who is interacting with the workspace. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.conversation_id**. + * + * **Note:** This property is the same as the **user_id** property at the root of the message body. If **user_id** + * is specified in both locations in a message request, the value specified at the root is used. + */ + user_id?: string; + } + + /** + * An input object that includes the input text. + * + * This type supports additional properties of type any. Any additional data included with the message input. + */ + export interface MessageInput { + /** The text of the user input. This string cannot contain carriage return, newline, or tab characters. */ + text?: string; + /** Whether to use spelling correction when processing the input. This property overrides the value of the + * **spelling_suggestions** property in the workspace settings. + */ + spelling_suggestions?: boolean; + /** Whether to use autocorrection when processing the input. If spelling correction is used and this property is + * `false`, any suggested corrections are returned in the **suggested_text** property of the message response. If + * this property is `true`, any corrections are automatically applied to the user input, and the original text is + * returned in the **original_text** property of the message response. This property overrides the value of the + * **spelling_auto_correct** property in the workspace settings. + */ + spelling_auto_correct?: boolean; + /** Any suggested corrections of the input text. This property is returned only if spelling correction is + * enabled and autocorrection is disabled. + */ + suggested_text?: string; + /** The original user input text. This property is returned only if autocorrection is enabled and the user input + * was corrected. + */ + original_text?: string; + + /** + * MessageInput accepts additional properties of type any. Any additional data included with the message input. + */ + [propName: string]: any; + } + + /** + * A request sent to the workspace, including the user input and context. + */ + export interface MessageRequest { + /** An input object that includes the input text. */ + input?: MessageInput; + /** Intents to use when evaluating the user input. Include intents from the previous response to continue using + * those intents rather than trying to recognize intents in the new input. + */ + intents?: RuntimeIntent[]; + /** Entities to use when evaluating the message. Include entities from the previous response to continue using + * those entities rather than detecting entities in the new input. + */ + entities?: RuntimeEntity[]; + /** Whether to return more than one intent. A value of `true` indicates that all matching intents are returned. */ + alternate_intents?: boolean; + /** State information for the conversation. To maintain state, include the context from the previous response. */ + context?: Context; + /** An output object that includes the response to the user, the dialog nodes that were triggered, and messages + * from the log. + */ + output?: OutputData; + /** An array of objects describing any actions requested by the dialog node. */ + actions?: DialogNodeAction[]; + /** A string value that identifies the user who is interacting with the workspace. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.conversation_id**. + * + * **Note:** This property is the same as the **user_id** property in the context metadata. If **user_id** is + * specified in both locations in a message request, the value specified at the root is used. + */ + user_id?: string; + } + + /** + * The response sent by the workspace, including the output text, detected intents and entities, and context. + */ + export interface MessageResponse { + /** An input object that includes the input text. */ + input: MessageInput; + /** An array of intents recognized in the user input, sorted in descending order of confidence. */ + intents: RuntimeIntent[]; + /** An array of entities identified in the user input. */ + entities: RuntimeEntity[]; + /** Whether to return more than one intent. A value of `true` indicates that all matching intents are returned. */ + alternate_intents?: boolean; + /** State information for the conversation. To maintain state, include the context from the previous response. */ + context: Context; + /** An output object that includes the response to the user, the dialog nodes that were triggered, and messages + * from the log. + */ + output: OutputData; + /** An array of objects describing any actions requested by the dialog node. */ + actions?: DialogNodeAction[]; + /** A string value that identifies the user who is interacting with the workspace. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.conversation_id**. + * + * **Note:** This property is the same as the **user_id** property in the context metadata. If **user_id** is + * specified in both locations in a message request, the value specified at the root is used. + */ + user_id: string; + } + + /** + * An output object that includes the response to the user, the dialog nodes that were triggered, and messages from + * the log. + * + * This type supports additional properties of type any. Any additional data included with the output. + */ + export interface OutputData { + /** An array of the nodes that were triggered to create the response, in the order in which they were visited. + * This information is useful for debugging and for tracing the path taken through the node tree. + */ + nodes_visited?: string[]; + /** An array of objects containing detailed diagnostic information about the nodes that were triggered during + * processing of the input message. Included only if **nodes_visited_details** is set to `true` in the message + * request. + */ + nodes_visited_details?: DialogNodeVisitedDetails[]; + /** An array of up to 50 messages logged with the request. */ + log_messages: LogMessage[]; + /** Output intended for any channel. It is the responsibility of the client application to implement the + * supported response types. + */ + generic?: RuntimeResponseGeneric[]; + + /** + * OutputData accepts additional properties of type any. Any additional data included with the output. + */ + [propName: string]: any; + } + + /** + * The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + export interface Pagination { + /** The URL that will return the same page of results. */ + refresh_url: string; + /** The URL that will return the next page of results. */ + next_url?: string; + /** The total number of objects that satisfy the request. This total includes all results, not just those + * included in the current page. + */ + total?: number; + /** Reserved for future use. */ + matched?: number; + /** A token identifying the current page of results. */ + refresh_cursor?: string; + /** A token identifying the next page of results. */ + next_cursor?: string; + } + + /** + * ResponseGenericChannel. + */ + export interface ResponseGenericChannel { + /** A channel for which the response is intended. + * + * **Note:** On IBM Cloud Pak for Data, only `chat` is supported. + */ + channel?: ResponseGenericChannel.Constants.Channel | string; + } + export namespace ResponseGenericChannel { + export namespace Constants { + /** A channel for which the response is intended. **Note:** On IBM Cloud Pak for Data, only `chat` is supported. */ + export enum Channel { + CHAT = 'chat', + FACEBOOK = 'facebook', + INTERCOM = 'intercom', + SLACK = 'slack', + TEXT_MESSAGING = 'text_messaging', + VOICE_TELEPHONY = 'voice_telephony', + WHATSAPP = 'whatsapp', + } + } + } + + /** + * A term from the request that was identified as an entity. + */ + export interface RuntimeEntity { + /** An entity detected in the input. */ + entity: string; + /** An array of zero-based character offsets that indicate where the detected entity values begin and end in the + * input text. + */ + location?: number[]; + /** The entity value that was recognized in the user input. */ + value: string; + /** A decimal percentage that represents confidence in the recognized entity. */ + confidence?: number; + /** The recognized capture groups for the entity, as defined by the entity pattern. */ + groups?: CaptureGroup[]; + /** An object containing detailed information about the entity recognized in the user input. + * + * For more information about how system entities are interpreted, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-system-entities). + */ + interpretation?: RuntimeEntityInterpretation; + /** An array of possible alternative values that the user might have intended instead of the value returned in + * the **value** property. This property is returned only for `@sys-time` and `@sys-date` entities when the user's + * input is ambiguous. + * + * This property is included only if the new system entities are enabled for the workspace. + */ + alternatives?: RuntimeEntityAlternative[]; + /** An object describing the role played by a system entity that is specifies the beginning or end of a range + * recognized in the user input. This property is included only if the new system entities are enabled for the + * workspace. + */ + role?: RuntimeEntityRole; + } + + /** + * An alternative value for the recognized entity. + */ + export interface RuntimeEntityAlternative { + /** The entity value that was recognized in the user input. */ + value?: string; + /** A decimal percentage that represents confidence in the recognized entity. */ + confidence?: number; + } + + /** + * RuntimeEntityInterpretation. + */ + export interface RuntimeEntityInterpretation { + /** The calendar used to represent a recognized date (for example, `Gregorian`). */ + calendar_type?: string; + /** A unique identifier used to associate a recognized time and date. If the user input contains a date and time + * that are mentioned together (for example, `Today at 5`, the same **datetime_link** value is returned for both + * the `@sys-date` and `@sys-time` entities). + */ + datetime_link?: string; + /** A locale-specific holiday name (such as `thanksgiving` or `christmas`). This property is included when a + * `@sys-date` entity is recognized based on a holiday name in the user input. + */ + festival?: string; + /** The precision or duration of a time range specified by a recognized `@sys-time` or `@sys-date` entity. */ + granularity?: RuntimeEntityInterpretation.Constants.Granularity | string; + /** A unique identifier used to associate multiple recognized `@sys-date`, `@sys-time`, or `@sys-number` + * entities that are recognized as a range of values in the user's input (for example, `from July 4 until July 14` + * or `from 20 to 25`). + */ + range_link?: string; + /** The word in the user input that indicates that a `sys-date` or `sys-time` entity is part of an implied range + * where only one date or time is specified (for example, `since` or `until`). + */ + range_modifier?: string; + /** A recognized mention of a relative day, represented numerically as an offset from the current date (for + * example, `-1` for `yesterday` or `10` for `in ten days`). + */ + relative_day?: number; + /** A recognized mention of a relative month, represented numerically as an offset from the current month (for + * example, `1` for `next month` or `-3` for `three months ago`). + */ + relative_month?: number; + /** A recognized mention of a relative week, represented numerically as an offset from the current week (for + * example, `2` for `in two weeks` or `-1` for `last week). + */ + relative_week?: number; + /** A recognized mention of a relative date range for a weekend, represented numerically as an offset from the + * current weekend (for example, `0` for `this weekend` or `-1` for `last weekend`). + */ + relative_weekend?: number; + /** A recognized mention of a relative year, represented numerically as an offset from the current year (for + * example, `1` for `next year` or `-5` for `five years ago`). + */ + relative_year?: number; + /** A recognized mention of a specific date, represented numerically as the date within the month (for example, + * `30` for `June 30`.). + */ + specific_day?: number; + /** A recognized mention of a specific day of the week as a lowercase string (for example, `monday`). */ + specific_day_of_week?: string; + /** A recognized mention of a specific month, represented numerically (for example, `7` for `July`). */ + specific_month?: number; + /** A recognized mention of a specific quarter, represented numerically (for example, `3` for `the third + * quarter`). + */ + specific_quarter?: number; + /** A recognized mention of a specific year (for example, `2016`). */ + specific_year?: number; + /** A recognized numeric value, represented as an integer or double. */ + numeric_value?: number; + /** The type of numeric value recognized in the user input (`integer` or `rational`). */ + subtype?: string; + /** A recognized term for a time that was mentioned as a part of the day in the user's input (for example, + * `morning` or `afternoon`). + */ + part_of_day?: string; + /** A recognized mention of a relative hour, represented numerically as an offset from the current hour (for + * example, `3` for `in three hours` or `-1` for `an hour ago`). + */ + relative_hour?: number; + /** A recognized mention of a relative time, represented numerically as an offset in minutes from the current + * time (for example, `5` for `in five minutes` or `-15` for `fifteen minutes ago`). + */ + relative_minute?: number; + /** A recognized mention of a relative time, represented numerically as an offset in seconds from the current + * time (for example, `10` for `in ten seconds` or `-30` for `thirty seconds ago`). + */ + relative_second?: number; + /** A recognized specific hour mentioned as part of a time value (for example, `10` for `10:15 AM`.). */ + specific_hour?: number; + /** A recognized specific minute mentioned as part of a time value (for example, `15` for `10:15 AM`.). */ + specific_minute?: number; + /** A recognized specific second mentioned as part of a time value (for example, `30` for `10:15:30 AM`.). */ + specific_second?: number; + /** A recognized time zone mentioned as part of a time value (for example, `EST`). */ + timezone?: string; + } + export namespace RuntimeEntityInterpretation { + export namespace Constants { + /** The precision or duration of a time range specified by a recognized `@sys-time` or `@sys-date` entity. */ + export enum Granularity { + DAY = 'day', + FORTNIGHT = 'fortnight', + HOUR = 'hour', + INSTANT = 'instant', + MINUTE = 'minute', + MONTH = 'month', + QUARTER = 'quarter', + SECOND = 'second', + WEEK = 'week', + WEEKEND = 'weekend', + YEAR = 'year', + } + } + } + + /** + * An object describing the role played by a system entity that is specifies the beginning or end of a range + * recognized in the user input. This property is included only if the new system entities are enabled for the + * workspace. + */ + export interface RuntimeEntityRole { + /** The relationship of the entity to the range. */ + type?: RuntimeEntityRole.Constants.Type | string; + } + export namespace RuntimeEntityRole { + export namespace Constants { + /** The relationship of the entity to the range. */ + export enum Type { + DATE_FROM = 'date_from', + DATE_TO = 'date_to', + NUMBER_FROM = 'number_from', + NUMBER_TO = 'number_to', + TIME_FROM = 'time_from', + TIME_TO = 'time_to', + } + } + } + + /** + * An intent identified in the user input. + */ + export interface RuntimeIntent { + /** The name of the recognized intent. */ + intent: string; + /** A decimal percentage that represents confidence in the intent. If you are specifying an intent as part of a + * request, but you do not have a calculated confidence value, specify `1`. + */ + confidence?: number; + } + + /** + * RuntimeResponseGeneric. + */ + export interface RuntimeResponseGeneric { + } + + /** + * An object describing an error that occurred during processing of an asynchronous operation. + */ + export interface StatusError { + /** The text of the error message. */ + message?: string; + } + + /** + * Synonym. + */ + export interface Synonym { + /** The text of the synonym. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + synonym: string; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + + /** + * SynonymCollection. + */ + export interface SynonymCollection { + /** An array of synonyms. */ + synonyms: Synonym[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * Value. + */ + export interface Value { + /** The text of the entity value. This string must conform to the following restrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + value: string; + /** Any metadata related to the entity value. */ + metadata?: JsonObject; + /** Specifies the type of entity value. */ + type: Value.Constants.Type | string; + /** An array of synonyms for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A synonym must conform to the following resrictions: + * - It cannot contain carriage return, newline, or tab characters. + * - It cannot consist of only whitespace characters. + */ + synonyms?: string[]; + /** An array of patterns for the entity value. A value can specify either synonyms or patterns (depending on the + * value type), but not both. A pattern is a regular expression; for more information about how to specify a + * pattern, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-entities#entities-create-dictionary-based). + */ + patterns?: string[]; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + export namespace Value { + export namespace Constants { + /** Specifies the type of entity value. */ + export enum Type { + SYNONYMS = 'synonyms', + PATTERNS = 'patterns', + } + } + } + + /** + * ValueCollection. + */ + export interface ValueCollection { + /** An array of entity values. */ + values: Value[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * A webhook that can be used by dialog nodes to make programmatic calls to an external function. + * + * **Note:** Currently, only a single webhook named `main_webhook` is supported. + */ + export interface Webhook { + /** The URL for the external service or application to which you want to send HTTP POST requests. */ + url: string; + /** The name of the webhook. Currently, `main_webhook` is the only supported value. */ + name: string; + /** An optional array of HTTP headers to pass with the HTTP request. */ + headers?: WebhookHeader[]; + } + + /** + * A key/value pair defining an HTTP header and a value. + */ + export interface WebhookHeader { + /** The name of an HTTP header (for example, `Authorization`). */ + name: string; + /** The value of an HTTP header. */ + value: string; + } + + /** + * Workspace. + */ + export interface Workspace { + /** The name of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + name: string; + /** The description of the workspace. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The language of the workspace. */ + language: string; + /** The workspace ID of the workspace. */ + workspace_id?: string; + /** An array of objects describing the dialog nodes in the workspace. */ + dialog_nodes?: DialogNode[]; + /** An array of objects defining input examples that have been marked as irrelevant input. */ + counterexamples?: Counterexample[]; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + /** Any metadata related to the workspace. */ + metadata?: JsonObject; + /** Whether training data from the workspace (including artifacts such as intents and entities) can be used by + * IBM for general service improvements. `true` indicates that workspace training data is not to be used. + */ + learning_opt_out: boolean; + /** Global settings for the workspace. */ + system_settings?: WorkspaceSystemSettings; + /** The current status of the workspace: + * - **Available**: The workspace is available and ready to process messages. + * - **Failed**: An asynchronous operation has failed. See the **status_errors** property for more information + * about the cause of the failure. + * - **Non Existent**: The workspace does not exist. + * - **Processing**: An asynchronous operation has not yet completed. + * - **Training**: The workspace is training based on new data such as intents or examples. + */ + status?: Workspace.Constants.Status | string; + /** An array of messages about errors that caused an asynchronous operation to fail. */ + status_errors?: StatusError[]; + webhooks?: Webhook[]; + /** An array of intents. */ + intents?: Intent[]; + /** An array of objects describing the entities for the workspace. */ + entities?: Entity[]; + /** An object containing properties that indicate how many intents, entities, and dialog nodes are defined in + * the workspace. This property is included only in responses from the **Export workspace asynchronously** method, + * and only when the **verbose** query parameter is set to `true`. + */ + counts?: WorkspaceCounts; + } + export namespace Workspace { + export namespace Constants { + /** The current status of the workspace: - **Available**: The workspace is available and ready to process messages. - **Failed**: An asynchronous operation has failed. See the **status_errors** property for more information about the cause of the failure. - **Non Existent**: The workspace does not exist. - **Processing**: An asynchronous operation has not yet completed. - **Training**: The workspace is training based on new data such as intents or examples. */ + export enum Status { + AVAILABLE = 'Available', + FAILED = 'Failed', + NON_EXISTENT = 'Non Existent', + PROCESSING = 'Processing', + TRAINING = 'Training', + UNAVAILABLE = 'Unavailable', + } + } + } + + /** + * WorkspaceCollection. + */ + export interface WorkspaceCollection { + /** An array of objects describing the workspaces associated with the service instance. */ + workspaces: Workspace[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * An object containing properties that indicate how many intents, entities, and dialog nodes are defined in the + * workspace. This property is included only in responses from the **Export workspace asynchronously** method, and + * only when the **verbose** query parameter is set to `true`. + */ + export interface WorkspaceCounts { + /** The number of intents defined in the workspace. */ + intent?: number; + /** The number of entities defined in the workspace. */ + entity?: number; + /** The number of nodes defined in the workspace. */ + node?: number; + } + + /** + * Global settings for the workspace. + * + * This type supports additional properties of type any. For internal use only. + */ + export interface WorkspaceSystemSettings { + /** Workspace settings related to the Watson Assistant user interface. */ + tooling?: WorkspaceSystemSettingsTooling; + /** Workspace settings related to the disambiguation feature. */ + disambiguation?: WorkspaceSystemSettingsDisambiguation; + /** For internal use only. */ + human_agent_assist?: JsonObject; + /** Whether spelling correction is enabled for the workspace. */ + spelling_suggestions?: boolean; + /** Whether autocorrection is enabled for the workspace. If spelling correction is enabled and this property is + * `false`, any suggested corrections are returned in the **suggested_text** property of the message response. If + * this property is `true`, any corrections are automatically applied to the user input, and the original text is + * returned in the **original_text** property of the message response. + */ + spelling_auto_correct?: boolean; + /** Workspace settings related to the behavior of system entities. */ + system_entities?: WorkspaceSystemSettingsSystemEntities; + /** Workspace settings related to detection of irrelevant input. */ + off_topic?: WorkspaceSystemSettingsOffTopic; + /** Workspace settings related to the version of the training algorithms currently used by the skill. */ + nlp?: WorkspaceSystemSettingsNlp; + + /** + * WorkspaceSystemSettings accepts additional properties of type any. For internal use only. + */ + [propName: string]: any; + } + + /** + * Workspace settings related to the disambiguation feature. + */ + export interface WorkspaceSystemSettingsDisambiguation { + /** The text of the introductory prompt that accompanies disambiguation options presented to the user. */ + prompt?: string; + /** The user-facing label for the option users can select if none of the suggested options is correct. If no + * value is specified for this property, this option does not appear. + */ + none_of_the_above_prompt?: string; + /** Whether the disambiguation feature is enabled for the workspace. */ + enabled?: boolean; + /** The sensitivity of the disambiguation feature to intent detection uncertainty. Higher sensitivity means that + * the disambiguation feature is triggered more often and includes more choices. + */ + sensitivity?: WorkspaceSystemSettingsDisambiguation.Constants.Sensitivity | string; + /** Whether the order in which disambiguation suggestions are presented should be randomized (but still + * influenced by relative confidence). + */ + randomize?: boolean; + /** The maximum number of disambigation suggestions that can be included in a `suggestion` response. */ + max_suggestions?: number; + /** For internal use only. */ + suggestion_text_policy?: string; + } + export namespace WorkspaceSystemSettingsDisambiguation { + export namespace Constants { + /** The sensitivity of the disambiguation feature to intent detection uncertainty. Higher sensitivity means that the disambiguation feature is triggered more often and includes more choices. */ + export enum Sensitivity { + AUTO = 'auto', + HIGH = 'high', + MEDIUM_HIGH = 'medium_high', + MEDIUM = 'medium', + MEDIUM_LOW = 'medium_low', + LOW = 'low', + } + } + } + + /** + * Workspace settings related to the version of the training algorithms currently used by the skill. + */ + export interface WorkspaceSystemSettingsNlp { + /** The policy the skill follows for selecting the algorithm version to use. For more information, see the + * [documentation](/docs/watson-assistant?topic=watson-assistant-algorithm-version). + * + * On IBM Cloud, you can specify `latest`, `previous`, or `beta`. + * + * On IBM Cloud Pak for Data, you can specify either `beta` or the date of the version you want to use, in + * `YYYY-MM-DD` format. + */ + model?: string; + } + + /** + * Workspace settings related to detection of irrelevant input. + */ + export interface WorkspaceSystemSettingsOffTopic { + /** Whether enhanced irrelevance detection is enabled for the workspace. */ + enabled?: boolean; + } + + /** + * Workspace settings related to the behavior of system entities. + */ + export interface WorkspaceSystemSettingsSystemEntities { + /** Whether the new system entities are enabled for the workspace. */ + enabled?: boolean; + } + + /** + * Workspace settings related to the Watson Assistant user interface. + */ + export interface WorkspaceSystemSettingsTooling { + /** Whether the dialog JSON editor displays text responses within the `output.generic` object. */ + store_generic_responses?: boolean; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeAudio. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeAudio extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the audio clip. */ + source: string; + /** An optional title to show before the response. */ + title?: string; + /** An optional description to show with the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** For internal use only. */ + channel_options?: JsonObject; + /** Descriptive text that can be used for screen readers or other situations where the audio player cannot be + * seen. + */ + alt_text?: string; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeChannelTransfer. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeChannelTransfer extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + * + * **Note:** The `channel_transfer` response type is not supported on IBM Cloud Pak for Data. + */ + response_type: string; + /** The message to display to the user when initiating a channel transfer. */ + message_to_user: string; + /** Information used by an integration to transfer the conversation to a different channel. */ + transfer_info: ChannelTransferInfo; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeConnectToAgent. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeConnectToAgent extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** An optional message to be sent to the human agent who will be taking over the conversation. */ + message_to_human_agent?: string; + /** An optional message to be displayed to the user to indicate that the conversation will be transferred to the + * next available agent. + */ + agent_available?: AgentAvailabilityMessage; + /** An optional message to be displayed to the user to indicate that no online agent is available to take over + * the conversation. + */ + agent_unavailable?: AgentAvailabilityMessage; + /** Routing or other contextual information to be used by target service desk systems. */ + transfer_info?: DialogNodeOutputConnectToAgentTransferInfo; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeIframe. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeIframe extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the embeddable content. */ + source: string; + /** An optional title to show before the response. */ + title?: string; + /** An optional description to show with the response. */ + description?: string; + /** The URL of an image that shows a preview of the embedded content. */ + image_url?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeImage. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeImage extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the image. */ + source: string; + /** An optional title to show before the response. */ + title?: string; + /** An optional description to show with the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + /** Descriptive text that can be used for screen readers or other situations where the image cannot be seen. */ + alt_text?: string; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeOption. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeOption extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** An optional title to show before the response. */ + title: string; + /** An optional description to show with the response. */ + description?: string; + /** The preferred type of control to display, if supported by the channel. */ + preference?: DialogNodeOutputGenericDialogNodeOutputResponseTypeOption.Constants.Preference | string; + /** An array of objects describing the options from which the user can choose. You can include up to 20 options. */ + options: DialogNodeOutputOptionsElement[]; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + } + export namespace DialogNodeOutputGenericDialogNodeOutputResponseTypeOption { + export namespace Constants { + /** The preferred type of control to display, if supported by the channel. */ + export enum Preference { + DROPDOWN = 'dropdown', + BUTTON = 'button', + } + } + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypePause. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypePause extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** How long to pause, in milliseconds. The valid values are from 0 to 10000. */ + time: number; + /** Whether to send a "user is typing" event during the pause. Ignored if the channel does not support this + * event. + */ + typing?: boolean; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeSearchSkill. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeSearchSkill extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + * + * **Note:** The **search_skill** response type is used only by the v2 runtime API. + */ + response_type: string; + /** The text of the search query. This can be either a natural-language query or a query that uses the Discovery + * query language syntax, depending on the value of the **query_type** property. For more information, see the + * [Discovery service + * documentation](https://cloud.ibm.com/docs/discovery?topic=discovery-query-operators#query-operators). + */ + query: string; + /** The type of the search query. */ + query_type: DialogNodeOutputGenericDialogNodeOutputResponseTypeSearchSkill.Constants.QueryType | string; + /** An optional filter that narrows the set of documents to be searched. For more information, see the + * [Discovery service documentation]([Discovery service + * documentation](https://cloud.ibm.com/docs/discovery?topic=discovery-query-parameters#filter). + */ + filter?: string; + /** The version of the Discovery service API to use for the query. */ + discovery_version?: string; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + } + export namespace DialogNodeOutputGenericDialogNodeOutputResponseTypeSearchSkill { + export namespace Constants { + /** The type of the search query. */ + export enum QueryType { + NATURAL_LANGUAGE = 'natural_language', + DISCOVERY_QUERY_LANGUAGE = 'discovery_query_language', + } + } + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeText. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeText extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** A list of one or more objects defining text responses. */ + values: DialogNodeOutputTextValuesElement[]; + /** How a response is selected from the list, if more than one response is specified. */ + selection_policy?: DialogNodeOutputGenericDialogNodeOutputResponseTypeText.Constants.SelectionPolicy | string; + /** The delimiter to use as a separator between responses when `selection_policy`=`multiline`. */ + delimiter?: string; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + } + export namespace DialogNodeOutputGenericDialogNodeOutputResponseTypeText { + export namespace Constants { + /** How a response is selected from the list, if more than one response is specified. */ + export enum SelectionPolicy { + SEQUENTIAL = 'sequential', + RANDOM = 'random', + MULTILINE = 'multiline', + } + } + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeUserDefined. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeUserDefined extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** An object containing any properties for the user-defined response type. The total size of this object cannot + * exceed 5000 bytes. + */ + user_defined: JsonObject; + /** An array of objects specifying channels for which the response is intended. */ + channels?: ResponseGenericChannel[]; + } + + /** + * DialogNodeOutputGenericDialogNodeOutputResponseTypeVideo. + */ + export interface DialogNodeOutputGenericDialogNodeOutputResponseTypeVideo extends DialogNodeOutputGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the video. */ + source: string; + /** An optional title to show before the response. */ + title?: string; + /** An optional description to show with the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** For internal use only. */ + channel_options?: JsonObject; + /** Descriptive text that can be used for screen readers or other situations where the video cannot be seen. */ + alt_text?: string; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeAudio. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeAudio extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the audio clip. */ + source: string; + /** The title or introductory text to show before the response. */ + title?: string; + /** The description to show with the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** For internal use only. */ + channel_options?: JsonObject; + /** Descriptive text that can be used for screen readers or other situations where the audio player cannot be + * seen. + */ + alt_text?: string; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeChannelTransfer. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeChannelTransfer extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + * + * **Note:** The `channel_transfer` response type is not supported on IBM Cloud Pak for Data. + */ + response_type: string; + /** The message to display to the user when initiating a channel transfer. */ + message_to_user: string; + /** Information used by an integration to transfer the conversation to a different channel. */ + transfer_info: ChannelTransferInfo; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended only for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeConnectToAgent. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeConnectToAgent extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** A message to be sent to the human agent who will be taking over the conversation. */ + message_to_human_agent?: string; + /** An optional message to be displayed to the user to indicate that the conversation will be transferred to the + * next available agent. + */ + agent_available?: AgentAvailabilityMessage; + /** An optional message to be displayed to the user to indicate that no online agent is available to take over + * the conversation. + */ + agent_unavailable?: AgentAvailabilityMessage; + /** Routing or other contextual information to be used by target service desk systems. */ + transfer_info?: DialogNodeOutputConnectToAgentTransferInfo; + /** A label identifying the topic of the conversation, derived from the **title** property of the relevant node + * or the **topic** property of the dialog node response. + */ + topic?: string; + /** The unique ID of the dialog node that the **topic** property is taken from. The **topic** property is + * populated using the value of the dialog node's **title** property. + */ + dialog_node?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeIframe. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeIframe extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the embeddable content. */ + source: string; + /** The title or introductory text to show before the response. */ + title?: string; + /** The description to show with the response. */ + description?: string; + /** The URL of an image that shows a preview of the embedded content. */ + image_url?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeImage. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeImage extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the image. */ + source: string; + /** The title or introductory text to show before the response. */ + title?: string; + /** The description to show with the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** Descriptive text that can be used for screen readers or other situations where the image cannot be seen. */ + alt_text?: string; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeOption. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeOption extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The title or introductory text to show before the response. */ + title: string; + /** The description to show with the response. */ + description?: string; + /** The preferred type of control to display. */ + preference?: RuntimeResponseGenericRuntimeResponseTypeOption.Constants.Preference | string; + /** An array of objects describing the options from which the user can choose. */ + options: DialogNodeOutputOptionsElement[]; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + export namespace RuntimeResponseGenericRuntimeResponseTypeOption { + export namespace Constants { + /** The preferred type of control to display. */ + export enum Preference { + DROPDOWN = 'dropdown', + BUTTON = 'button', + } + } + } + + /** + * RuntimeResponseGenericRuntimeResponseTypePause. + */ + export interface RuntimeResponseGenericRuntimeResponseTypePause extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** How long to pause, in milliseconds. */ + time: number; + /** Whether to send a "user is typing" event during the pause. */ + typing?: boolean; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeSuggestion. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeSuggestion extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The title or introductory text to show before the response. */ + title: string; + /** An array of objects describing the possible matching dialog nodes from which the user can choose. */ + suggestions: DialogSuggestion[]; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeText. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeText extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The text of the response. */ + text: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeUserDefined. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeUserDefined extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** An object containing any properties for the user-defined response type. */ + user_defined: JsonObject; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeVideo. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeVideo extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the video. */ + source: string; + /** The title or introductory text to show before the response. */ + title?: string; + /** The description to show with the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** For internal use only. */ + channel_options?: JsonObject; + /** Descriptive text that can be used for screen readers or other situations where the video cannot be seen. */ + alt_text?: string; + } +} + +export = AssistantV1; diff --git a/assistant/v2.ts b/assistant/v2.ts new file mode 100644 index 0000000000..3b5855804f --- /dev/null +++ b/assistant/v2.ts @@ -0,0 +1,7086 @@ +/** + * (C) Copyright IBM Corp. 2026. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * IBM OpenAPI SDK Code Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +import * as extend from 'extend'; +import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http'; +import { + AbortSignal, + Authenticator, + BaseService, + UserOptions, + getAuthenticatorFromEnvironment, + validateParams, +} from 'ibm-cloud-sdk-core'; +import { getSdkHeaders } from '../lib/common'; + +/** + * The IBM® watsonx™ Assistant service combines machine learning, natural language understanding, and an + * integrated dialog editor to create conversation flows between your apps and your users. + * + * The Assistant v2 API provides runtime methods your client application can use to send user input to an assistant and + * receive a response. + * + * You need a paid Plus plan or higher to use the watsonx Assistant v2 API. + * + * API Version: 2.0 + * See: https://cloud.ibm.com/docs/assistant + */ + +class AssistantV2 extends BaseService { + static DEFAULT_SERVICE_URL: string = 'https://api.us-south.assistant.watson.cloud.ibm.com'; + + static DEFAULT_SERVICE_NAME: string = 'assistant'; + + /** Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is + * `2024-08-25`. + */ + version: string; + + /** + * Construct a AssistantV2 object. + * + * @param {Object} options - Options for the service. + * @param {string} options.version - Release date of the API version you want to use. Specify dates in YYYY-MM-DD + * format. The current version is `2024-08-25`. + * @param {string} [options.serviceUrl] - The base URL for the service + * @param {OutgoingHttpHeaders} [options.headers] - Default headers that shall be included with every request to the service. + * @param {string} [options.serviceName] - The name of the service to configure + * @param {Authenticator} [options.authenticator] - The Authenticator object used to authenticate requests to the service. Defaults to environment if not set + * @constructor + * @returns {AssistantV2} + */ + constructor(options: UserOptions) { + options = options || {}; + + const _requiredParams = ['version']; + const _validationErrors = validateParams(options, _requiredParams, null); + if (_validationErrors) { + throw _validationErrors; + } + if (!options.serviceName) { + options.serviceName = AssistantV2.DEFAULT_SERVICE_NAME; + } + // If the caller didn't supply an authenticator, construct one from external configuration. + if (!options.authenticator) { + options.authenticator = getAuthenticatorFromEnvironment(options.serviceName); + } + super(options); + this.configureService(options.serviceName); + if (options.serviceUrl) { + this.setServiceUrl(options.serviceUrl); + } + this.version = options.version; + } + + /************************* + * conversationalSkillProviders + ************************/ + + /** + * Create a conversational skill provider. + * + * Create a new conversational skill provider. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.providerId - The unique identifier of the provider. + * @param {ProviderSpecification} params.specification - The specification of the provider. + * @param {ProviderPrivate} params._private - Private information of the provider. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createProvider( + params: AssistantV2.CreateProviderParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['providerId', 'specification', '_private']; + const _validParams = ['providerId', 'specification', '_private', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'provider_id': _params.providerId, + 'specification': _params.specification, + 'private': _params._private, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'createProvider'); + + const parameters = { + options: { + url: '/v2/providers', + method: 'POST', + body, + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * List conversational skill providers. + * + * List the conversational skill providers associated with a Watson Assistant service instance. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned conversational skill providers will be sorted. To + * reverse the sort order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listProviders( + params?: AssistantV2.ListProvidersParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'listProviders'); + + const parameters = { + options: { + url: '/v2/providers', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update a conversational skill provider. + * + * Update a new conversational skill provider. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.providerId - Unique identifier of the conversational skill provider. + * @param {ProviderSpecification} params.specification - The specification of the provider. + * @param {ProviderPrivate} params._private - Private information of the provider. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateProvider( + params: AssistantV2.UpdateProviderParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['providerId', 'specification', '_private']; + const _validParams = ['providerId', 'specification', '_private', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'specification': _params.specification, + 'private': _params._private, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'provider_id': _params.providerId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'updateProvider'); + + const parameters = { + options: { + url: '/v2/providers/{provider_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * assistants + ************************/ + + /** + * Create an assistant. + * + * Create a new assistant. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {string} [params.language] - The language of the assistant. + * @param {string} [params.name] - The name of the assistant. This string cannot contain carriage return, newline, or + * tab characters. + * @param {string} [params.description] - The description of the assistant. This string cannot contain carriage + * return, newline, or tab characters. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createAssistant( + params?: AssistantV2.CreateAssistantParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['language', 'name', 'description', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'language': _params.language, + 'name': _params.name, + 'description': _params.description, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'createAssistant'); + + const parameters = { + options: { + url: '/v2/assistants', + method: 'POST', + body, + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * List assistants. + * + * List the assistants associated with a watsonx Assistant service instance. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned assistants will be sorted. To reverse the sort + * order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listAssistants( + params?: AssistantV2.ListAssistantsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'listAssistants'); + + const parameters = { + options: { + url: '/v2/assistants', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete assistant. + * + * Delete an assistant. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteAssistant( + params: AssistantV2.DeleteAssistantParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteAssistant'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * sessions + ************************/ + + /** + * Create a session. + * + * Create a new session. A session is used to send user input to a skill and receive responses. It also maintains the + * state of the conversation. A session persists until it is deleted, or until it times out because of inactivity. + * (For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-settings).). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {RequestAnalytics} [params.analytics] - An optional object containing analytics data. Currently, this data + * is used only for events sent to the Segment extension. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createSession( + params: AssistantV2.CreateSessionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId']; + const _validParams = ['assistantId', 'environmentId', 'analytics', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'analytics': _params.analytics, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'createSession'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}/sessions', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete session. + * + * Deletes a session explicitly before it times out. (For more information about the session inactivity timeout, see + * the [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-settings)). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {string} params.sessionId - Unique identifier of the session. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteSession( + params: AssistantV2.DeleteSessionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId', 'sessionId']; + const _validParams = ['assistantId', 'environmentId', 'sessionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + 'session_id': _params.sessionId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteSession'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}/sessions/{session_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * message + ************************/ + + /** + * Send user input to assistant (stateful). + * + * Send user input to an assistant and receive a response, with conversation state (including context data) stored by + * watsonx Assistant for the duration of the session. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {string} params.sessionId - Unique identifier of the session. + * @param {MessageInput} [params.input] - An input object that includes the input text. + * @param {MessageContext} [params.context] - Context data for the conversation. You can use this property to set or + * modify context variables, which can also be accessed by dialog nodes. The context is stored by the assistant on a + * per-session basis. + * + * **Note:** The total size of the context data stored for a stateful session cannot exceed 100KB. + * @param {string} [params.userId] - A string value that identifies the user who is interacting with the assistant. + * The client must provide a unique identifier for each individual end user who accesses the application. For + * user-based plans, this user ID is used to identify unique users for billing purposes. This string cannot contain + * carriage return, newline, or tab characters. If no value is specified in the input, **user_id** is automatically + * set to the value of **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations, the value specified at the root is used. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public message( + params: AssistantV2.MessageParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId', 'sessionId']; + const _validParams = ['assistantId', 'environmentId', 'sessionId', 'input', 'context', 'userId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'input': _params.input, + 'context': _params.context, + 'user_id': _params.userId, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + 'session_id': _params.sessionId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'message'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}/sessions/{session_id}/message', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Send user input to assistant (stateless). + * + * Send user input to an assistant and receive a response, with conversation state (including context data) managed by + * your application. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {StatelessMessageInput} [params.input] - An input object that includes the input text. + * @param {StatelessMessageContext} [params.context] - Context data for the conversation. You can use this property to + * set or modify context variables, which can also be accessed by dialog nodes. The context is not stored by the + * assistant. To maintain session state, include the context from the previous response. + * + * **Note:** The total size of the context data for a stateless session cannot exceed 250KB. + * @param {string} [params.userId] - A string value that identifies the user who is interacting with the assistant. + * The client must provide a unique identifier for each individual end user who accesses the application. For + * user-based plans, this user ID is used to identify unique users for billing purposes. This string cannot contain + * carriage return, newline, or tab characters. If no value is specified in the input, **user_id** is automatically + * set to the value of **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations in a message request, the value specified at the root is used. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public messageStateless( + params: AssistantV2.MessageStatelessParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId']; + const _validParams = ['assistantId', 'environmentId', 'input', 'context', 'userId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'input': _params.input, + 'context': _params.context, + 'user_id': _params.userId, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'messageStateless'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}/message', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * messageStream + ************************/ + + /** + * Send user input to assistant (stateful). + * + * Send user input to an assistant and receive a streamed response, with conversation state (including context data) + * stored by watsonx Assistant for the duration of the session. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {string} params.sessionId - Unique identifier of the session. + * @param {MessageInput} [params.input] - An input object that includes the input text. + * @param {MessageContext} [params.context] - Context data for the conversation. You can use this property to set or + * modify context variables, which can also be accessed by dialog nodes. The context is stored by the assistant on a + * per-session basis. + * + * **Note:** The total size of the context data stored for a stateful session cannot exceed 100KB. + * @param {string} [params.userId] - A string value that identifies the user who is interacting with the assistant. + * The client must provide a unique identifier for each individual end user who accesses the application. For + * user-based plans, this user ID is used to identify unique users for billing purposes. This string cannot contain + * carriage return, newline, or tab characters. If no value is specified in the input, **user_id** is automatically + * set to the value of **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations, the value specified at the root is used. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public messageStream( + params: AssistantV2.MessageStreamParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId', 'sessionId']; + const _validParams = ['assistantId', 'environmentId', 'sessionId', 'input', 'context', 'userId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'input': _params.input, + 'context': _params.context, + 'user_id': _params.userId, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + 'session_id': _params.sessionId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'messageStream'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}/sessions/{session_id}/message_stream', + method: 'POST', + body, + qs: query, + path, + responseType: 'stream', + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'text/event-stream', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Send user input to assistant (stateless). + * + * Send user input to an assistant and receive a response, with conversation state (including context data) managed by + * your application. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {MessageInput} [params.input] - An input object that includes the input text. + * @param {MessageContext} [params.context] - Context data for the conversation. You can use this property to set or + * modify context variables, which can also be accessed by dialog nodes. The context is stored by the assistant on a + * per-session basis. + * + * **Note:** The total size of the context data stored for a stateful session cannot exceed 100KB. + * @param {string} [params.userId] - A string value that identifies the user who is interacting with the assistant. + * The client must provide a unique identifier for each individual end user who accesses the application. For + * user-based plans, this user ID is used to identify unique users for billing purposes. This string cannot contain + * carriage return, newline, or tab characters. If no value is specified in the input, **user_id** is automatically + * set to the value of **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations, the value specified at the root is used. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public messageStreamStateless( + params: AssistantV2.MessageStreamStatelessParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId']; + const _validParams = ['assistantId', 'environmentId', 'input', 'context', 'userId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'input': _params.input, + 'context': _params.context, + 'user_id': _params.userId, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'messageStreamStateless'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}/message_stream', + method: 'POST', + body, + qs: query, + path, + responseType: 'stream', + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'text/event-stream', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * bulkClassify + ************************/ + + /** + * Identify intents and entities in multiple user utterances. + * + * Send multiple user inputs to a dialog skill in a single request and receive information about the intents and + * entities recognized in each input. This method is useful for testing and comparing the performance of different + * skills or skill versions. + * + * This method is available only with Enterprise with Data Isolation plans. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.skillId - Unique identifier of the skill. To find the action or dialog skill ID in the + * watsonx Assistant user interface, open the skill settings and click **API Details**. To find the search skill ID, + * use the Get environment API to retrieve the skill references for an environment and it will include the search + * skill info, if available. + * @param {BulkClassifyUtterance[]} params.input - An array of input utterances to classify. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public bulkClassify( + params: AssistantV2.BulkClassifyParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['skillId', 'input']; + const _validParams = ['skillId', 'input', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'input': _params.input, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'skill_id': _params.skillId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'bulkClassify'); + + const parameters = { + options: { + url: '/v2/skills/{skill_id}/workspace/bulk_classify', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * logs + ************************/ + + /** + * List log events for an assistant. + * + * List the events from the log of an assistant. + * + * This method requires Manager access. + * + * **Note:** If you use the **cursor** parameter to retrieve results one page at a time, subsequent requests must be + * no more than 5 minutes apart. Any returned value for the **cursor** parameter becomes invalid after 5 minutes. For + * more information about using pagination, see [Pagination](#pagination). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - The assistant ID or the environment ID of the environment where the assistant + * is deployed. + * Set the value for this ID depending on the type of request: + * + * - For message, session, and log requests, specify the environment ID of the environment where the assistant is + * deployed. + * + * - For all other requests, specify the assistant ID of the assistant. + * + * To get the **assistant ID** and **environment ID** in the watsonx Assistant interface, open the **Assistant + * settings** page, and scroll to the **Assistant IDs and API details** section and click **View Details**. + * + * **Note:** If you are using the classic Watson Assistant experience, always use the assistant ID. + * + * To find the **assistant ID** in the user interface, open the **Assistant settings** and click **API Details**. + * @param {string} [params.sort] - How to sort the returned log events. You can sort by **request_timestamp**. To + * reverse the sort order, prefix the parameter value with a minus sign (`-`). + * @param {string} [params.filter] - A cacheable parameter that limits the results to those matching the specified + * filter. For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-filter-reference#filter-reference). + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * + * **Note:** If the API is not returning your data, try lowering the page_limit value. + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listLogs( + params: AssistantV2.ListLogsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'sort', 'filter', 'pageLimit', 'cursor', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'sort': _params.sort, + 'filter': _params.filter, + 'page_limit': _params.pageLimit, + 'cursor': _params.cursor, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'listLogs'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/logs', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * userData + ************************/ + + /** + * Delete labeled data. + * + * Deletes all data associated with a specified customer ID. The method has no effect if no data is associated with + * the customer ID. + * + * You associate a customer ID with data by passing the `X-Watson-Metadata` header with a request that passes data. + * For more information about personal data and customer IDs, see [Information + * security](https://cloud.ibm.com/docs/assistant?topic=assistant-information-security#information-security). + * + * **Note:** This operation is intended only for deleting data associated with a single specific customer, not for + * deleting data associated with multiple customers or for any other purpose. For more information, see [Labeling and + * deleting data in watsonx + * Assistant](https://cloud.ibm.com/docs/assistant?topic=assistant-information-security#information-security-gdpr-wa). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.customerId - The customer ID for which all data is to be deleted. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteUserData( + params: AssistantV2.DeleteUserDataParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['customerId']; + const _validParams = ['customerId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'customer_id': _params.customerId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteUserData'); + + const parameters = { + options: { + url: '/v2/user_data', + method: 'DELETE', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * environments + ************************/ + + /** + * List environments. + * + * List the environments associated with an assistant. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned environments will be sorted. To reverse the sort + * order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listEnvironments( + params: AssistantV2.ListEnvironmentsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'listEnvironments'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get environment. + * + * Get information about an environment. For more information about environments, see + * [Environments](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-publish-overview#environments). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getEnvironment( + params: AssistantV2.GetEnvironmentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId']; + const _validParams = ['assistantId', 'environmentId', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'getEnvironment'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update environment. + * + * Update an environment with new or modified data. For more information about environments, see + * [Environments](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-publish-overview#environments). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.environmentId - Unique identifier of the environment. To find the environment ID in the + * watsonx Assistant user interface, open the environment settings and click **API Details**. **Note:** Currently, the + * API does not support creating environments. + * @param {string} [params.name] - The name of the environment. + * @param {string} [params.description] - The description of the environment. + * @param {UpdateEnvironmentOrchestration} [params.orchestration] - The search skill orchestration settings for the + * environment. + * @param {number} [params.sessionTimeout] - The session inactivity timeout setting for the environment (in seconds). + * @param {EnvironmentSkill[]} [params.skillReferences] - An array of objects identifying the skills (such as action + * and dialog) that exist in the environment. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateEnvironment( + params: AssistantV2.UpdateEnvironmentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'environmentId']; + const _validParams = ['assistantId', 'environmentId', 'name', 'description', 'orchestration', 'sessionTimeout', 'skillReferences', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'orchestration': _params.orchestration, + 'session_timeout': _params.sessionTimeout, + 'skill_references': _params.skillReferences, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'environment_id': _params.environmentId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'updateEnvironment'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/environments/{environment_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * releases + ************************/ + + /** + * Create release. + * + * Create a new release using the current content of the dialog and action skills in the draft environment. (In the + * watsonx Assistant user interface, a release is called a *version*.). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} [params.description] - The description of the release. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createRelease( + params: AssistantV2.CreateReleaseParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'description', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'description': _params.description, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'createRelease'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * List releases. + * + * List the releases associated with an assistant. (In the watsonx Assistant user interface, a release is called a + * *version*.). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {number} [params.pageLimit] - The number of records to return in each page of results. + * @param {boolean} [params.includeCount] - Whether to include information about the number of records that satisfy + * the request, regardless of the page limit. If this parameter is `true`, the `pagination` object in the response + * includes the `total` property. + * @param {string} [params.sort] - The attribute by which returned workspaces will be sorted. To reverse the sort + * order, prefix the value with a minus sign (`-`). + * @param {string} [params.cursor] - A token identifying the page of results to retrieve. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listReleases( + params: AssistantV2.ListReleasesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'pageLimit', 'includeCount', 'sort', 'cursor', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'page_limit': _params.pageLimit, + 'include_count': _params.includeCount, + 'sort': _params.sort, + 'cursor': _params.cursor, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'listReleases'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get release. + * + * Get information about a release. + * + * Release data is not available until publishing of the release completes. If publishing is still in progress, you + * can continue to poll by calling the same request again and checking the value of the **status** property. When + * processing has completed, the request returns the release data. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.release - Unique identifier of the release. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getRelease( + params: AssistantV2.GetReleaseParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'release']; + const _validParams = ['assistantId', 'release', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'release': _params.release, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'getRelease'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases/{release}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete release. + * + * Delete a release. (In the watsonx Assistant user interface, a release is called a *version*.). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.release - Unique identifier of the release. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteRelease( + params: AssistantV2.DeleteReleaseParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'release']; + const _validParams = ['assistantId', 'release', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'release': _params.release, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteRelease'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases/{release}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Deploy release. + * + * Update the environment with the content of the release. All snapshots saved as part of the release become active in + * the environment. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.release - Unique identifier of the release. + * @param {string} params.environmentId - The environment ID of the environment where the release is to be deployed. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deployRelease( + params: AssistantV2.DeployReleaseParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'release', 'environmentId']; + const _validParams = ['assistantId', 'release', 'environmentId', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'environment_id': _params.environmentId, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'release': _params.release, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'deployRelease'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases/{release}/deploy', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create release export. + * + * Initiate an asynchronous process which will create a downloadable Zip file artifact (/package) for an assistant + * release. This artifact will contain Action and/or Dialog skills that are part of the release. The Dialog skill will + * only be included in the event that coexistence is enabled on the assistant. The expected workflow with the use of + * Release Export endpoint is to first initiate the creation of the artifact with the POST endpoint and then poll the + * GET endpoint to retrieve the artifact. Once the artifact has been created, it will last for the duration (/scope) + * of the release. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.release - Unique identifier of the release. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createReleaseExport( + params: AssistantV2.CreateReleaseExportParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'release']; + const _validParams = ['assistantId', 'release', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'release': _params.release, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'createReleaseExport'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases/{release}/export', + method: 'POST', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get release export. + * + * A dual function endpoint to either retrieve the Zip file artifact that is associated with an assistant release or, + * retrieve the status of the artifact's creation. It is assumed that the artifact creation was already initiated + * prior to calling this endpoint. In the event that the artifact is not yet created and ready for download, this + * endpoint can be used to poll the system until the creation is completed or has failed. On the other hand, if the + * artifact is created, this endpoint will return the Zip file artifact as an octet stream. Once the artifact has been + * created, it will last for the duration (/scope) of the release.

When you will have downloaded the Zip + * file artifact, you have one of three ways to import it into an assistant's draft environment. These are as follows. + *
  1. Import the zip package in Tooling via "Assistant Settings" -> "Download/Upload files" -> + * "Upload" -> "Assistant only".
  2. Import the zip package via "Create release import" endpoint using the + * APIs.
  3. Extract the contents of the Zip file artifact and individually import the skill JSONs via skill + * update endpoints.
. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.release - Unique identifier of the release. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public downloadReleaseExport( + params: AssistantV2.DownloadReleaseExportParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'release']; + const _validParams = ['assistantId', 'release', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'release': _params.release, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'downloadReleaseExport'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases/{release}/export', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get release export as stream. + * + * A dual function endpoint to either retrieve the Zip file artifact that is associated with an assistant release or, + * retrieve the status of the artifact's creation. It is assumed that the artifact creation was already initiated + * prior to calling this endpoint. In the event that the artifact is not yet created and ready for download, this + * endpoint can be used to poll the system until the creation is completed or has failed. On the other hand, if the + * artifact is created, this endpoint will return the Zip file artifact as an octet stream. Once the artifact has been + * created, it will last for the duration (/scope) of the release.

When you will have downloaded the Zip + * file artifact, you have one of three ways to import it into an assistant's draft environment. These are as follows. + *
  1. Import the zip package in Tooling via "Assistant Settings" -> "Download/Upload files" -> + * "Upload" -> "Assistant only".
  2. Import the zip package via "Create release import" endpoint using the + * APIs.
  3. Extract the contents of the Zip file artifact and individually import the skill JSONs via skill + * update endpoints.
. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.release - Unique identifier of the release. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public downloadReleaseExportAsStream( + params: AssistantV2.DownloadReleaseExportAsStreamParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'release']; + const _validParams = ['assistantId', 'release', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'release': _params.release, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'downloadReleaseExportAsStream'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/releases/{release}/export', + method: 'GET', + qs: query, + path, + responseType: 'stream', + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/octet-stream', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create release import. + * + * Import a previously exported assistant release Zip file artifact (/package) into an assistant. This endpoint + * creates (/initiates) an asynchronous task (/job) in the background which will import the artifact contents into the + * draft environment of the assistant on which this endpoint is called. Specifically, the asynchronous operation will + * override the action and/or dialog skills in the assistant. It will be worth noting that when the artifact that is + * provided to this endpoint is from an assistant release which has coexistence enabled (i.e., it has both action and + * dialog skills), the import process will automatically enable coexistence, if not already enabled, on the assistant + * into which said artifact is being uploaded to. On the other hand, if the artifact package being imported only has + * action skill in it, the import asynchronous process will only override the draft environment's action skill, + * regardless of whether coexistence is enabled on the assistant into which the package is being imported. Lastly, the + * system will only run one asynchronous import at a time on an assistant. As such, consecutive imports will override + * previous import's updates to the skills in the draft environment. Once created, you may poll the completion of the + * import via the "Get release import Status" endpoint. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {NodeJS.ReadableStream | Buffer} params.body - Request body is an Octet-stream of the artifact Zip file that + * is being imported. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createReleaseImport( + params: AssistantV2.CreateReleaseImportParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'body']; + const _validParams = ['assistantId', 'body', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = _params.body; + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'createReleaseImport'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/import', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/octet-stream', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get release import Status. + * + * Monitor the status of an assistant release import. You may poll this endpoint until the status of the import has + * either succeeded or failed. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getReleaseImportStatus( + params: AssistantV2.GetReleaseImportStatusParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'getReleaseImportStatus'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/import', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * skills + ************************/ + + /** + * Get skill. + * + * Get information about a skill. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.skillId - Unique identifier of the skill. To find the action or dialog skill ID in the + * watsonx Assistant user interface, open the skill settings and click **API Details**. To find the search skill ID, + * use the Get environment API to retrieve the skill references for an environment and it will include the search + * skill info, if available. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getSkill( + params: AssistantV2.GetSkillParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'skillId']; + const _validParams = ['assistantId', 'skillId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'skill_id': _params.skillId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'getSkill'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/skills/{skill_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update skill. + * + * Update a skill with new or modified data. + * + * **Note:** The update is performed asynchronously; you can see the status of the update by calling the **Get + * skill** method and checking the value of the **status** property. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {string} params.skillId - Unique identifier of the skill. To find the action or dialog skill ID in the + * watsonx Assistant user interface, open the skill settings and click **API Details**. To find the search skill ID, + * use the Get environment API to retrieve the skill references for an environment and it will include the search + * skill info, if available. + * @param {string} [params.name] - The name of the skill. This string cannot contain carriage return, newline, or tab + * characters. + * @param {string} [params.description] - The description of the skill. This string cannot contain carriage return, + * newline, or tab characters. + * @param {JsonObject} [params.workspace] - An object containing the conversational content of an action or dialog + * skill. + * @param {JsonObject} [params.dialogSettings] - For internal use only. + * @param {SearchSettings} [params.searchSettings] - An object describing the search skill configuration. + * + * **Note:** Search settings are not supported in **Import skills** requests, and are not included in **Export + * skills** responses. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateSkill( + params: AssistantV2.UpdateSkillParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'skillId']; + const _validParams = ['assistantId', 'skillId', 'name', 'description', 'workspace', 'dialogSettings', 'searchSettings', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'workspace': _params.workspace, + 'dialog_settings': _params.dialogSettings, + 'search_settings': _params.searchSettings, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + 'skill_id': _params.skillId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'updateSkill'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/skills/{skill_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Export skills. + * + * Asynchronously export the action skill and dialog skill (if enabled) for the assistant. Use this method to save all + * skill data from the draft environment so that you can import it to a different assistant using the **Import + * skills** method. Use `assistant_id` instead of `environment_id` to call this endpoint. + * + * A successful call to this method only initiates an asynchronous export. The exported JSON data is not available + * until processing completes. + * + * After the initial request is submitted, you can poll the status of the operation by calling the same request again + * and checking the value of the **status** property. If an error occurs (indicated by a **status** value of + * `Failed`), the `status_description` property provides more information about the error, and the `status_errors` + * property contains an array of error messages that caused the failure. + * + * When processing has completed, the request returns the exported JSON data. Remember that the usual rate limits + * apply. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public exportSkills( + params: AssistantV2.ExportSkillsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'exportSkills'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/skills_export', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Import skills. + * + * Asynchronously import skills into an existing assistant from a previously exported file. This method only imports + * assistants into a draft environment. Use `assistant_id` instead of `environment_id` to call this endpoint. + * + * The request body for this method should contain the response data that was received from a previous call to the + * **Export skills** method, without modification. + * + * A successful call to this method initiates an asynchronous import. The updated skills belonging to the assistant + * are not available until processing completes. To check the status of the asynchronous import operation, use the + * **Get status of skills import** method. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {SkillImport[]} params.assistantSkills - An array of objects describing the skills for the assistant. + * Included in responses only if **status**=`Available`. + * @param {AssistantState} params.assistantState - Status information about the skills for the assistant. Included in + * responses only if **status**=`Available`. + * @param {boolean} [params.includeAudit] - Whether to include the audit properties (`created` and `updated` + * timestamps) in the response. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public importSkills( + params: AssistantV2.ImportSkillsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId', 'assistantSkills', 'assistantState']; + const _validParams = ['assistantId', 'assistantSkills', 'assistantState', 'includeAudit', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'assistant_skills': _params.assistantSkills, + 'assistant_state': _params.assistantState, + }; + + const query = { + 'version': this.version, + 'include_audit': _params.includeAudit, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'importSkills'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/skills_import', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get status of skills import. + * + * Retrieve the status of an asynchronous import operation previously initiated by using the **Import skills** method. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.assistantId - Unique identifier of the assistant. To get the **assistant ID** in the watsonx + * Assistant interface, open the **Assistant settings** page, and scroll to the **Assistant IDs and API details** + * section and click **View Details**. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public importSkillsStatus( + params: AssistantV2.ImportSkillsStatusParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['assistantId']; + const _validParams = ['assistantId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'assistant_id': _params.assistantId, + }; + + const sdkHeaders = getSdkHeaders(AssistantV2.DEFAULT_SERVICE_NAME, 'v2', 'importSkillsStatus'); + + const parameters = { + options: { + url: '/v2/assistants/{assistant_id}/skills_import/status', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } +} + +/************************* + * interfaces + ************************/ + +namespace AssistantV2 { + /** Options for the `AssistantV2` constructor. */ + export interface Options extends UserOptions { + /** Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is + * `2024-08-25`. + */ + version: string; + } + + /** An operation response. */ + export interface Response { + result: T; + status: number; + statusText: string; + headers: IncomingHttpHeaders; + } + + /** The callback for a service request. */ + export type Callback = (error: any, response?: Response) => void; + + /** The body of a service request that returns no response data. */ + export interface EmptyObject {} + + /** A standard JS object, defined to avoid the limitations of `Object` and `object` */ + export interface JsonObject { + [key: string]: any; + } + + /************************* + * request interfaces + ************************/ + + interface DefaultParams { + headers?: OutgoingHttpHeaders; + signal?: AbortSignal; + } + + /** Parameters for the `createProvider` operation. */ + export interface CreateProviderParams extends DefaultParams { + /** The unique identifier of the provider. */ + providerId: string; + /** The specification of the provider. */ + specification: ProviderSpecification; + /** Private information of the provider. */ + _private: ProviderPrivate; + } + + /** Parameters for the `listProviders` operation. */ + export interface ListProvidersParams extends DefaultParams { + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned conversational skill providers will be sorted. To reverse the sort order, + * prefix the value with a minus sign (`-`). + */ + sort?: ListProvidersConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listProviders` operation. */ + export namespace ListProvidersConstants { + /** The attribute by which returned conversational skill providers will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + NAME = 'name', + UPDATED = 'updated', + } + } + + /** Parameters for the `updateProvider` operation. */ + export interface UpdateProviderParams extends DefaultParams { + /** Unique identifier of the conversational skill provider. */ + providerId: string; + /** The specification of the provider. */ + specification: ProviderSpecification; + /** Private information of the provider. */ + _private: ProviderPrivate; + } + + /** Parameters for the `createAssistant` operation. */ + export interface CreateAssistantParams extends DefaultParams { + /** The language of the assistant. */ + language?: string; + /** The name of the assistant. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the assistant. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + } + + /** Parameters for the `listAssistants` operation. */ + export interface ListAssistantsParams extends DefaultParams { + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned assistants will be sorted. To reverse the sort order, prefix the value with + * a minus sign (`-`). + */ + sort?: ListAssistantsConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listAssistants` operation. */ + export namespace ListAssistantsConstants { + /** The attribute by which returned assistants will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + NAME = 'name', + UPDATED = 'updated', + } + } + + /** Parameters for the `deleteAssistant` operation. */ + export interface DeleteAssistantParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + } + + /** Parameters for the `createSession` operation. */ + export interface CreateSessionParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** An optional object containing analytics data. Currently, this data is used only for events sent to the + * Segment extension. + */ + analytics?: RequestAnalytics; + } + + /** Parameters for the `deleteSession` operation. */ + export interface DeleteSessionParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** Unique identifier of the session. */ + sessionId: string; + } + + /** Parameters for the `message` operation. */ + export interface MessageParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** Unique identifier of the session. */ + sessionId: string; + /** An input object that includes the input text. */ + input?: MessageInput; + /** Context data for the conversation. You can use this property to set or modify context variables, which can + * also be accessed by dialog nodes. The context is stored by the assistant on a per-session basis. + * + * **Note:** The total size of the context data stored for a stateful session cannot exceed 100KB. + */ + context?: MessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations, the value specified at the root is used. + */ + userId?: string; + } + + /** Parameters for the `messageStateless` operation. */ + export interface MessageStatelessParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** An input object that includes the input text. */ + input?: StatelessMessageInput; + /** Context data for the conversation. You can use this property to set or modify context variables, which can + * also be accessed by dialog nodes. The context is not stored by the assistant. To maintain session state, include + * the context from the previous response. + * + * **Note:** The total size of the context data for a stateless session cannot exceed 250KB. + */ + context?: StatelessMessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations in a message request, the value specified at the root is used. + */ + userId?: string; + } + + /** Parameters for the `messageStream` operation. */ + export interface MessageStreamParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** Unique identifier of the session. */ + sessionId: string; + /** An input object that includes the input text. */ + input?: MessageInput; + /** Context data for the conversation. You can use this property to set or modify context variables, which can + * also be accessed by dialog nodes. The context is stored by the assistant on a per-session basis. + * + * **Note:** The total size of the context data stored for a stateful session cannot exceed 100KB. + */ + context?: MessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations, the value specified at the root is used. + */ + userId?: string; + } + + /** Parameters for the `messageStreamStateless` operation. */ + export interface MessageStreamStatelessParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** An input object that includes the input text. */ + input?: MessageInput; + /** Context data for the conversation. You can use this property to set or modify context variables, which can + * also be accessed by dialog nodes. The context is stored by the assistant on a per-session basis. + * + * **Note:** The total size of the context data stored for a stateful session cannot exceed 100KB. + */ + context?: MessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations, the value specified at the root is used. + */ + userId?: string; + } + + /** Parameters for the `bulkClassify` operation. */ + export interface BulkClassifyParams extends DefaultParams { + /** Unique identifier of the skill. To find the action or dialog skill ID in the watsonx Assistant user + * interface, open the skill settings and click **API Details**. To find the search skill ID, use the Get + * environment API to retrieve the skill references for an environment and it will include the search skill info, + * if available. + */ + skillId: string; + /** An array of input utterances to classify. */ + input: BulkClassifyUtterance[]; + } + + /** Parameters for the `listLogs` operation. */ + export interface ListLogsParams extends DefaultParams { + /** The assistant ID or the environment ID of the environment where the assistant is deployed. + * Set the value for this ID depending on the type of request: + * + * - For message, session, and log requests, specify the environment ID of the environment where the assistant is + * deployed. + * + * - For all other requests, specify the assistant ID of the assistant. + * + * To get the **assistant ID** and **environment ID** in the watsonx Assistant interface, open the **Assistant + * settings** page, and scroll to the **Assistant IDs and API details** section and click **View Details**. + * + * **Note:** If you are using the classic Watson Assistant experience, always use the assistant ID. + * + * To find the **assistant ID** in the user interface, open the **Assistant settings** and click **API Details**. + */ + assistantId: string; + /** How to sort the returned log events. You can sort by **request_timestamp**. To reverse the sort order, + * prefix the parameter value with a minus sign (`-`). + */ + sort?: string; + /** A cacheable parameter that limits the results to those matching the specified filter. For more information, + * see the [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-filter-reference#filter-reference). + */ + filter?: string; + /** The number of records to return in each page of results. + * + * **Note:** If the API is not returning your data, try lowering the page_limit value. + */ + pageLimit?: number; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + } + + /** Parameters for the `deleteUserData` operation. */ + export interface DeleteUserDataParams extends DefaultParams { + /** The customer ID for which all data is to be deleted. */ + customerId: string; + } + + /** Parameters for the `listEnvironments` operation. */ + export interface ListEnvironmentsParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned environments will be sorted. To reverse the sort order, prefix the value + * with a minus sign (`-`). + */ + sort?: ListEnvironmentsConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listEnvironments` operation. */ + export namespace ListEnvironmentsConstants { + /** The attribute by which returned environments will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + NAME = 'name', + UPDATED = 'updated', + } + } + + /** Parameters for the `getEnvironment` operation. */ + export interface GetEnvironmentParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `updateEnvironment` operation. */ + export interface UpdateEnvironmentParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the environment. To find the environment ID in the watsonx Assistant user interface, + * open the environment settings and click **API Details**. **Note:** Currently, the API does not support creating + * environments. + */ + environmentId: string; + /** The name of the environment. */ + name?: string; + /** The description of the environment. */ + description?: string; + /** The search skill orchestration settings for the environment. */ + orchestration?: UpdateEnvironmentOrchestration; + /** The session inactivity timeout setting for the environment (in seconds). */ + sessionTimeout?: number; + /** An array of objects identifying the skills (such as action and dialog) that exist in the environment. */ + skillReferences?: EnvironmentSkill[]; + } + + /** Parameters for the `createRelease` operation. */ + export interface CreateReleaseParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** The description of the release. */ + description?: string; + } + + /** Parameters for the `listReleases` operation. */ + export interface ListReleasesParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** The number of records to return in each page of results. */ + pageLimit?: number; + /** Whether to include information about the number of records that satisfy the request, regardless of the page + * limit. If this parameter is `true`, the `pagination` object in the response includes the `total` property. + */ + includeCount?: boolean; + /** The attribute by which returned workspaces will be sorted. To reverse the sort order, prefix the value with + * a minus sign (`-`). + */ + sort?: ListReleasesConstants.Sort | string; + /** A token identifying the page of results to retrieve. */ + cursor?: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Constants for the `listReleases` operation. */ + export namespace ListReleasesConstants { + /** The attribute by which returned workspaces will be sorted. To reverse the sort order, prefix the value with a minus sign (`-`). */ + export enum Sort { + NAME = 'name', + UPDATED = 'updated', + } + } + + /** Parameters for the `getRelease` operation. */ + export interface GetReleaseParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the release. */ + release: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `deleteRelease` operation. */ + export interface DeleteReleaseParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the release. */ + release: string; + } + + /** Parameters for the `deployRelease` operation. */ + export interface DeployReleaseParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the release. */ + release: string; + /** The environment ID of the environment where the release is to be deployed. */ + environmentId: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `createReleaseExport` operation. */ + export interface CreateReleaseExportParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the release. */ + release: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `downloadReleaseExport` operation. */ + export interface DownloadReleaseExportParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the release. */ + release: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `downloadReleaseExportAsStream` operation. */ + export interface DownloadReleaseExportAsStreamParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the release. */ + release: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `createReleaseImport` operation. */ + export interface CreateReleaseImportParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Request body is an Octet-stream of the artifact Zip file that is being imported. */ + body: NodeJS.ReadableStream | Buffer; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getReleaseImportStatus` operation. */ + export interface GetReleaseImportStatusParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `getSkill` operation. */ + export interface GetSkillParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the skill. To find the action or dialog skill ID in the watsonx Assistant user + * interface, open the skill settings and click **API Details**. To find the search skill ID, use the Get + * environment API to retrieve the skill references for an environment and it will include the search skill info, + * if available. + */ + skillId: string; + } + + /** Parameters for the `updateSkill` operation. */ + export interface UpdateSkillParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Unique identifier of the skill. To find the action or dialog skill ID in the watsonx Assistant user + * interface, open the skill settings and click **API Details**. To find the search skill ID, use the Get + * environment API to retrieve the skill references for an environment and it will include the search skill info, + * if available. + */ + skillId: string; + /** The name of the skill. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the skill. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** An object containing the conversational content of an action or dialog skill. */ + workspace?: JsonObject; + /** For internal use only. */ + dialogSettings?: JsonObject; + /** An object describing the search skill configuration. + * + * **Note:** Search settings are not supported in **Import skills** requests, and are not included in **Export + * skills** responses. + */ + searchSettings?: SearchSettings; + } + + /** Parameters for the `exportSkills` operation. */ + export interface ExportSkillsParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `importSkills` operation. */ + export interface ImportSkillsParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + /** An array of objects describing the skills for the assistant. Included in responses only if + * **status**=`Available`. + */ + assistantSkills: SkillImport[]; + /** Status information about the skills for the assistant. Included in responses only if **status**=`Available`. */ + assistantState: AssistantState; + /** Whether to include the audit properties (`created` and `updated` timestamps) in the response. */ + includeAudit?: boolean; + } + + /** Parameters for the `importSkillsStatus` operation. */ + export interface ImportSkillsStatusParams extends DefaultParams { + /** Unique identifier of the assistant. To get the **assistant ID** in the watsonx Assistant interface, open the + * **Assistant settings** page, and scroll to the **Assistant IDs and API details** section and click **View + * Details**. + */ + assistantId: string; + } + + /************************* + * model interfaces + ************************/ + + /** + * AgentAvailabilityMessage. + */ + export interface AgentAvailabilityMessage { + /** The text of the message. */ + message?: string; + } + + /** + * AssistantCollection. + */ + export interface AssistantCollection { + /** An array of objects describing the assistants associated with the instance. */ + assistants: AssistantData[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * AssistantData. + */ + export interface AssistantData { + /** The unique identifier of the assistant. */ + assistant_id?: string; + /** The name of the assistant. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the assistant. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** The language of the assistant. */ + language: string; + /** An array of skill references identifying the skills associated with the assistant. */ + assistant_skills?: AssistantSkill[]; + /** An array of objects describing the environments defined for the assistant. */ + assistant_environments?: EnvironmentReference[]; + } + + /** + * AssistantSkill. + */ + export interface AssistantSkill { + /** The skill ID of the skill. */ + skill_id: string; + /** The type of the skill. */ + type?: AssistantSkill.Constants.Type | string; + } + export namespace AssistantSkill { + export namespace Constants { + /** The type of the skill. */ + export enum Type { + DIALOG = 'dialog', + ACTION = 'action', + SEARCH = 'search', + } + } + } + + /** + * Status information about the skills for the assistant. Included in responses only if **status**=`Available`. + */ + export interface AssistantState { + /** Whether the action skill is disabled in the draft environment. */ + action_disabled: boolean; + /** Whether the dialog skill is disabled in the draft environment. */ + dialog_disabled: boolean; + } + + /** + * The search skill orchestration settings for the environment. + */ + export interface BaseEnvironmentOrchestration { + /** Whether to fall back to a search skill when responding to messages that do not match any intent or action + * defined in dialog or action skills. (If no search skill is configured for the environment, this property is + * ignored.). + */ + search_skill_fallback?: boolean; + } + + /** + * An object describing the release that is currently deployed in the environment. + */ + export interface BaseEnvironmentReleaseReference { + /** The name of the deployed release. */ + release?: string; + } + + /** + * BulkClassifyOutput. + */ + export interface BulkClassifyOutput { + /** The user input utterance to classify. */ + input?: BulkClassifyUtterance; + /** An array of entities identified in the utterance. */ + entities?: RuntimeEntity[]; + /** An array of intents recognized in the utterance. */ + intents?: RuntimeIntent[]; + } + + /** + * BulkClassifyResponse. + */ + export interface BulkClassifyResponse { + /** An array of objects that contain classification information for the submitted input utterances. */ + output?: BulkClassifyOutput[]; + } + + /** + * The user input utterance to classify. + */ + export interface BulkClassifyUtterance { + /** The text of the input utterance. */ + text: string; + } + + /** + * CaptureGroup. + */ + export interface CaptureGroup { + /** A recognized capture group for the entity. */ + group: string; + /** Zero-based character offsets that indicate where the entity value begins and ends in the input text. */ + location?: number[]; + } + + /** + * Information used by an integration to transfer the conversation to a different channel. + */ + export interface ChannelTransferInfo { + /** An object specifying target channels available for the transfer. Each property of this object represents an + * available transfer target. Currently, the only supported property is **chat**, representing the web chat + * integration. + */ + target: ChannelTransferTarget; + } + + /** + * An object specifying target channels available for the transfer. Each property of this object represents an + * available transfer target. Currently, the only supported property is **chat**, representing the web chat + * integration. + */ + export interface ChannelTransferTarget { + /** Information for transferring to the web chat integration. */ + chat?: ChannelTransferTargetChat; + } + + /** + * Information for transferring to the web chat integration. + */ + export interface ChannelTransferTargetChat { + /** The URL of the target web chat. */ + url?: string; + } + + /** + * ClientAction. + */ + export interface ClientAction { + /** The name of the client action. */ + name?: string; + /** The name of the variable that the results are stored in. */ + result_variable?: string; + /** The type of turn event. */ + type?: string; + /** The skill that is requesting the action. Included only if **type**=`client`. */ + skill?: ClientAction.Constants.Skill | string; + /** An object containing arbitrary variables that are included in the turn event. */ + parameters?: JsonObject; + } + export namespace ClientAction { + export namespace Constants { + /** The skill that is requesting the action. Included only if **type**=`client`. */ + export enum Skill { + MAIN_SKILL = 'main skill', + ACTIONS_SKILL = 'actions skill', + } + } + } + + /** + * CreateAssistantReleaseImportResponse. + */ + export interface CreateAssistantReleaseImportResponse { + /** The current status of the artifact import process: + * - **Failed**: The asynchronous artifact import process has failed. + * - **Processing**: An asynchronous operation to import artifact is underway and not yet completed. + */ + status?: CreateAssistantReleaseImportResponse.Constants.Status | string; + /** A unique identifier for a background asynchronous task that is executing or has executed the operation. */ + task_id?: string; + /** The ID of the assistant to which the release belongs. */ + assistant_id?: string; + /** An array of skill types in the draft environment which will be overridden with skills from the artifact + * being imported. + */ + skill_impact_in_draft?: CreateAssistantReleaseImportResponse.Constants.SkillImpactInDraft[] | string[]; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + export namespace CreateAssistantReleaseImportResponse { + export namespace Constants { + /** The current status of the artifact import process: - **Failed**: The asynchronous artifact import process has failed. - **Processing**: An asynchronous operation to import artifact is underway and not yet completed. */ + export enum Status { + FAILED = 'Failed', + PROCESSING = 'Processing', + } + /** An array of skill types in the draft environment which will be overridden with skills from the artifact being imported. */ + export enum SkillImpactInDraft { + ACTION = 'action', + DIALOG = 'dialog', + } + } + } + + /** + * CreateReleaseExportWithStatusErrors. + */ + export interface CreateReleaseExportWithStatusErrors { + /** The current status of the release export creation process: + * - **Available**: The release export package is available for download. + * - **Failed**: The asynchronous release export package creation process has failed. + * - **Processing**: An asynchronous operation to create the release export package is underway and not yet + * completed. + */ + status?: CreateReleaseExportWithStatusErrors.Constants.Status | string; + /** A unique identifier for a background asynchronous task that is executing or has executed the operation. */ + task_id?: string; + /** The ID of the assistant to which the release belongs. */ + assistant_id?: string; + /** The name of the release. The name is the version number (an integer), returned as a string. */ + release?: string; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + /** An array of messages about errors that caused an asynchronous operation to fail. Included only if + * **status**=`Failed`. + */ + status_errors?: StatusError[]; + /** The description of the failed asynchronous operation. Included only if **status**=`Failed`. */ + status_description?: string; + } + export namespace CreateReleaseExportWithStatusErrors { + export namespace Constants { + /** The current status of the release export creation process: - **Available**: The release export package is available for download. - **Failed**: The asynchronous release export package creation process has failed. - **Processing**: An asynchronous operation to create the release export package is underway and not yet completed. */ + export enum Status { + AVAILABLE = 'Available', + FAILED = 'Failed', + PROCESSING = 'Processing', + } + } + } + + /** + * Dialog log message details. + */ + export interface DialogLogMessage { + /** The severity of the log message. */ + level: DialogLogMessage.Constants.Level | string; + /** The text of the log message. */ + message: string; + /** A code that indicates the category to which the error message belongs. */ + code: string; + /** An object that identifies the dialog element that generated the error message. */ + source?: LogMessageSource; + } + export namespace DialogLogMessage { + export namespace Constants { + /** The severity of the log message. */ + export enum Level { + INFO = 'info', + ERROR = 'error', + WARN = 'warn', + } + } + } + + /** + * DialogNodeAction. + */ + export interface DialogNodeAction { + /** The name of the action. */ + name: string; + /** The type of action to invoke. */ + type?: DialogNodeAction.Constants.Type | string; + /** A map of key/value pairs to be provided to the action. */ + parameters?: JsonObject; + /** The location in the dialog context where the result of the action is stored. */ + result_variable: string; + /** The name of the context variable that the client application will use to pass in credentials for the action. */ + credentials?: string; + } + export namespace DialogNodeAction { + export namespace Constants { + /** The type of action to invoke. */ + export enum Type { + CLIENT = 'client', + SERVER = 'server', + WEB_ACTION = 'web-action', + CLOUD_FUNCTION = 'cloud-function', + } + } + } + + /** + * Routing or other contextual information to be used by target service desk systems. + */ + export interface DialogNodeOutputConnectToAgentTransferInfo { + target?: JsonObject; + } + + /** + * DialogNodeOutputOptionsElement. + */ + export interface DialogNodeOutputOptionsElement { + /** The user-facing label for the option. */ + label: string; + /** An object defining the message input to be sent to the assistant if the user selects the corresponding + * option. + */ + value: DialogNodeOutputOptionsElementValue; + } + + /** + * An object defining the message input to be sent to the assistant if the user selects the corresponding option. + */ + export interface DialogNodeOutputOptionsElementValue { + /** An input object that includes the input text. */ + input?: MessageInput; + } + + /** + * An objects containing detailed diagnostic information about a dialog node that was visited during processing of the + * input message. + */ + export interface DialogNodeVisited { + /** A dialog node that was visited during processing of the input message. */ + dialog_node?: string; + /** The title of the dialog node. */ + title?: string; + /** The conditions that trigger the dialog node. */ + conditions?: string; + } + + /** + * DialogSuggestion. + */ + export interface DialogSuggestion { + /** The user-facing label for the suggestion. This label is taken from the **title** or **user_label** property + * of the corresponding dialog node, depending on the disambiguation options. + */ + label: string; + /** An object defining the message input to be sent to the assistant if the user selects the corresponding + * disambiguation option. + * + * **Note:** This entire message input object must be included in the request body of the next message sent to the + * assistant. Do not modify or remove any of the included properties. + */ + value: DialogSuggestionValue; + /** The dialog output that will be returned from the watsonx Assistant service if the user selects the + * corresponding option. + */ + output?: JsonObject; + } + + /** + * An object defining the message input to be sent to the assistant if the user selects the corresponding + * disambiguation option. + * + * **Note:** This entire message input object must be included in the request body of the next message sent to the + * assistant. Do not modify or remove any of the included properties. + */ + export interface DialogSuggestionValue { + /** An input object that includes the input text. */ + input?: MessageInput; + } + + /** + * DtmfCommandInfo. + */ + export interface DtmfCommandInfo { + /** Specifies the type of DTMF command for the phone integration. */ + type: DtmfCommandInfo.Constants.Type | string; + /** Parameters specified by the command type. */ + parameters?: JsonObject; + } + export namespace DtmfCommandInfo { + export namespace Constants { + /** Specifies the type of DTMF command for the phone integration. */ + export enum Type { + COLLECT = 'collect', + DISABLE_BARGE_IN = 'disable_barge_in', + ENABLE_BARGE_IN = 'enable_barge_in', + SEND = 'send', + } + } + } + + /** + * Environment. + */ + export interface Environment { + /** The name of the environment. */ + name?: string; + /** The description of the environment. */ + description?: string; + /** The assistant ID of the assistant the environment is associated with. */ + assistant_id?: string; + /** The environment ID of the environment. */ + environment_id?: string; + /** The type of the environment. All environments other than the `draft` and `live` environments have the type + * `staging`. + */ + environment?: string; + /** An object describing the release that is currently deployed in the environment. */ + release_reference?: BaseEnvironmentReleaseReference; + /** The search skill orchestration settings for the environment. */ + orchestration: BaseEnvironmentOrchestration; + /** The session inactivity timeout setting for the environment (in seconds). */ + session_timeout: number; + /** An array of objects describing the integrations that exist in the environment. */ + integration_references?: IntegrationReference[]; + /** An array of objects identifying the skills (such as action and dialog) that exist in the environment. */ + skill_references: EnvironmentSkill[]; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + + /** + * EnvironmentCollection. + */ + export interface EnvironmentCollection { + /** An array of objects describing the environments associated with an assistant. */ + environments: Environment[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * EnvironmentReference. + */ + export interface EnvironmentReference { + /** The name of the environment. */ + name?: string; + /** The unique identifier of the environment. */ + environment_id?: string; + /** The type of the environment. All environments other than the draft and live environments have the type + * `staging`. + */ + environment?: EnvironmentReference.Constants.Environment | string; + } + export namespace EnvironmentReference { + export namespace Constants { + /** The type of the environment. All environments other than the draft and live environments have the type `staging`. */ + export enum Environment { + DRAFT = 'draft', + LIVE = 'live', + STAGING = 'staging', + } + } + } + + /** + * EnvironmentSkill. + */ + export interface EnvironmentSkill { + /** The skill ID of the skill. */ + skill_id: string; + /** The type of the skill. */ + type?: EnvironmentSkill.Constants.Type | string; + /** Whether the skill is disabled. A disabled skill in the draft environment does not handle any messages at run + * time, and it is not included in saved releases. + */ + disabled?: boolean; + /** The name of the skill snapshot that is deployed to the environment (for example, `draft` or `1`). */ + snapshot?: string; + /** The type of skill identified by the skill reference. The possible values are `main skill` (for a dialog + * skill), `actions skill`, and `search skill`. + */ + skill_reference?: string; + } + export namespace EnvironmentSkill { + export namespace Constants { + /** The type of the skill. */ + export enum Type { + DIALOG = 'dialog', + ACTION = 'action', + SEARCH = 'search', + } + } + } + + /** + * Message final response content. + */ + export interface FinalResponse { + /** Assistant output to be rendered or processed by the client. */ + output?: FinalResponseOutput; + /** Context data for the conversation. You can use this property to access context variables. The context is + * stored by the assistant on a per-session basis. + * + * **Note:** The context is included in message responses only if **return_context**=`true` in the message request. + * Full context is always included in logs. + */ + context?: MessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. + */ + user_id?: string; + /** Assistant output to be rendered or processed by the client. All private data is masked or removed. */ + masked_output?: MessageOutput; + /** An input object that includes the input text. All private data is masked or removed. */ + masked_input?: MessageInput; + } + + /** + * Assistant output to be rendered or processed by the client. + */ + export interface FinalResponseOutput { + /** Output intended for any channel. It is the responsibility of the client application to implement the + * supported response types. + */ + generic?: RuntimeResponseGeneric[]; + /** An array of intents recognized in the user input, sorted in descending order of confidence. */ + intents?: RuntimeIntent[]; + /** An array of entities identified in the user input. */ + entities?: RuntimeEntity[]; + /** An array of objects describing any actions requested by the dialog node. */ + actions?: DialogNodeAction[]; + /** Additional detailed information about a message response and how it was generated. */ + debug?: MessageOutputDebug; + /** An object containing any custom properties included in the response. This object includes any arbitrary + * properties defined in the dialog JSON editor as part of the dialog node output. + */ + user_defined?: JsonObject; + /** Properties describing any spelling corrections in the user input that was received. */ + spelling?: MessageOutputSpelling; + /** An array of objects that provide information about calls to large language models that occured as part of + * handling this message. + */ + llm_metadata?: MessageOutputLLMMetadata[]; + /** Contains meta-information about the item(s) being streamed. */ + streaming_metadata: MessageStreamMetadata; + } + + /** + * GenerativeAITask. + */ + export interface GenerativeAITask { + } + + /** + * The confidence scores for determining whether to show the generated response or an “I don't know” response. + */ + export interface GenerativeAITaskConfidenceScores { + /** The confidence score based on user query and search results. */ + pre_gen?: number; + /** The pre_gen confidence score threshold. If the pre_gen score is below this threshold, it shows an “I don't + * know” response instead of the generated response. Shown in the conversational search skill UI as the “Retrieval + * Confidence threshold”. + */ + pre_gen_threshold?: number; + /** The confidence score based on user query, search results, and the generated response. */ + post_gen?: number; + /** The post_gen confidence score threshold. If the post_gen score is below this threshold, it shows an “I don't + * know” response instead of the generated response. Shown in the conversational search skill UI as the “Response + * Confidence threshold”. + */ + post_gen_threshold?: number; + } + + /** + * IntegrationReference. + */ + export interface IntegrationReference { + /** The integration ID of the integration. */ + integration_id?: string; + /** The type of the integration. */ + type?: string; + } + + /** + * Log. + */ + export interface Log { + /** A unique identifier for the logged event. */ + log_id: string; + /** A message request formatted for the watsonx Assistant service. */ + request: LogRequest; + /** A response from the watsonx Assistant service. */ + response: LogResponse; + /** Unique identifier of the assistant. */ + assistant_id: string; + /** The ID of the session the message was part of. */ + session_id: string; + /** The unique identifier of the skill that responded to the message. */ + skill_id: string; + /** The name of the snapshot (dialog skill version) that responded to the message (for example, `draft`). */ + snapshot: string; + /** The timestamp for receipt of the message. */ + request_timestamp: string; + /** The timestamp for the system response to the message. */ + response_timestamp: string; + /** The language of the assistant to which the message request was made. */ + language: string; + /** The customer ID specified for the message, if any. */ + customer_id?: string; + } + + /** + * LogCollection. + */ + export interface LogCollection { + /** An array of objects describing log events. */ + logs: Log[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: LogPagination; + } + + /** + * An object that identifies the dialog element that generated the error message. + */ + export interface LogMessageSource { + } + + /** + * The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + export interface LogPagination { + /** The URL that will return the next page of results, if any. */ + next_url?: string; + /** Reserved for future use. */ + matched?: number; + /** A token identifying the next page of results. */ + next_cursor?: string; + } + + /** + * A message request formatted for the watsonx Assistant service. + */ + export interface LogRequest { + /** An input object that includes the input text. All private data is masked or removed. */ + input?: LogRequestInput; + /** Context data for the conversation. You can use this property to set or modify context variables, which can + * also be accessed by dialog nodes. The context is stored by the assistant on a per-session basis. + * + * **Note:** The total size of the context data stored for a stateful session cannot exceed 100KB. + */ + context?: MessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. If **user_id** is + * specified in both locations, the value specified at the root is used. + */ + user_id?: string; + } + + /** + * An input object that includes the input text. All private data is masked or removed. + */ + export interface LogRequestInput { + /** The type of the message: + * + * - `text`: The user input is processed normally by the assistant. + * - `search`: Only search results are returned. (Any dialog or action skill is bypassed.) + * + * **Note:** A `search` message results in an error if no search skill is configured for the assistant. + */ + message_type?: LogRequestInput.Constants.MessageType | string; + /** The text of the user input. This string cannot contain carriage return, newline, or tab characters. */ + text?: string; + /** Intents to use when evaluating the user input. Include intents from the previous response to continue using + * those intents rather than trying to recognize intents in the new input. + */ + intents?: RuntimeIntent[]; + /** Entities to use when evaluating the message. Include entities from the previous response to continue using + * those entities rather than detecting entities in the new input. + */ + entities?: RuntimeEntity[]; + /** For internal use only. */ + suggestion_id?: string; + /** An array of multimedia attachments to be sent with the message. Attachments are not processed by the + * assistant itself, but can be sent to external services by webhooks. + * + * **Note:** Attachments are not supported on IBM Cloud Pak for Data. + */ + attachments?: MessageInputAttachment[]; + /** An optional object containing analytics data. Currently, this data is used only for events sent to the + * Segment extension. + */ + analytics?: RequestAnalytics; + /** Optional properties that control how the assistant responds. */ + options?: MessageInputOptions; + } + export namespace LogRequestInput { + export namespace Constants { + /** The type of the message: - `text`: The user input is processed normally by the assistant. - `search`: Only search results are returned. (Any dialog or action skill is bypassed.) **Note:** A `search` message results in an error if no search skill is configured for the assistant. */ + export enum MessageType { + TEXT = 'text', + SEARCH = 'search', + } + } + } + + /** + * A response from the watsonx Assistant service. + */ + export interface LogResponse { + /** Assistant output to be rendered or processed by the client. All private data is masked or removed. */ + output: LogResponseOutput; + /** Context data for the conversation. You can use this property to access context variables. The context is + * stored by the assistant on a per-session basis. + * + * **Note:** The context is included in message responses only if **return_context**=`true` in the message request. + * Full context is always included in logs. + */ + context?: MessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. + */ + user_id: string; + } + + /** + * Assistant output to be rendered or processed by the client. All private data is masked or removed. + */ + export interface LogResponseOutput { + /** Output intended for any channel. It is the responsibility of the client application to implement the + * supported response types. + */ + generic?: RuntimeResponseGeneric[]; + /** An array of intents recognized in the user input, sorted in descending order of confidence. */ + intents?: RuntimeIntent[]; + /** An array of entities identified in the user input. */ + entities?: RuntimeEntity[]; + /** An array of objects describing any actions requested by the dialog node. */ + actions?: DialogNodeAction[]; + /** Additional detailed information about a message response and how it was generated. */ + debug?: MessageOutputDebug; + /** An object containing any custom properties included in the response. This object includes any arbitrary + * properties defined in the dialog JSON editor as part of the dialog node output. + */ + user_defined?: JsonObject; + /** Properties describing any spelling corrections in the user input that was received. */ + spelling?: MessageOutputSpelling; + /** An array of objects that provide information about calls to large language models that occured as part of + * handling this message. + */ + llm_metadata?: MessageOutputLLMMetadata[]; + } + + /** + * MessageContext. + */ + export interface MessageContext { + /** Session context data that is shared by all skills used by the assistant. */ + global?: MessageContextGlobal; + /** Context data specific to particular skills used by the assistant. */ + skills?: MessageContextSkills; + /** An object containing context data that is specific to particular integrations. For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-integrations). + */ + integrations?: JsonObject; + } + + /** + * Context variables that are used by the action skill. Private variables are persisted, but not shown. + */ + export interface MessageContextActionSkill { + /** An object containing any arbitrary variables that can be read and written by a particular skill. */ + user_defined?: JsonObject; + /** System context data used by the skill. */ + system?: MessageContextSkillSystem; + /** An object containing action variables. Action variables can be accessed only by steps in the same action, + * and do not persist after the action ends. + */ + action_variables?: JsonObject; + /** An object containing skill variables. (In the watsonx Assistant user interface, skill variables are called + * _session variables_.) Skill variables can be accessed by any action and persist for the duration of the session. + */ + skill_variables?: JsonObject; + } + + /** + * Context variables that are used by the dialog skill. + */ + export interface MessageContextDialogSkill { + /** An object containing any arbitrary variables that can be read and written by a particular skill. */ + user_defined?: JsonObject; + /** System context data used by the skill. */ + system?: MessageContextSkillSystem; + } + + /** + * Session context data that is shared by all skills used by the assistant. + */ + export interface MessageContextGlobal { + /** Built-in system properties that apply to all skills used by the assistant. */ + system?: MessageContextGlobalSystem; + /** The session ID. */ + session_id?: string; + } + + /** + * Built-in system properties that apply to all skills used by the assistant. + */ + export interface MessageContextGlobalSystem { + /** The user time zone. The assistant uses the time zone to correctly resolve relative time references. */ + timezone?: string; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property at the root of the message body. If **user_id** + * is specified in both locations in a message request, the value specified at the root is used. + */ + user_id?: string; + /** A counter that is automatically incremented with each turn of the conversation. A value of 1 indicates that + * this is the the first turn of a new conversation, which can affect the behavior of some skills (for example, + * triggering the start node of a dialog). + */ + turn_count?: number; + /** The language code for localization in the user input. The specified locale overrides the default for the + * assistant, and is used for interpreting entity values in user input such as date values. For example, + * `04/03/2018` might be interpreted either as April 3 or March 4, depending on the locale. + * + * This property is included only if the new system entities are enabled for the skill. + */ + locale?: MessageContextGlobalSystem.Constants.Locale | string; + /** The base time for interpreting any relative time mentions in the user input. The specified time overrides + * the current server time, and is used to calculate times mentioned in relative terms such as `now` or `tomorrow`. + * This can be useful for simulating past or future times for testing purposes, or when analyzing documents such as + * news articles. + * + * This value must be a UTC time value formatted according to ISO 8601 (for example, `2021-06-26T12:00:00Z` for + * noon UTC on 26 June 2021). + * + * This property is included only if the new system entities are enabled for the skill. + */ + reference_time?: string; + /** The time at which the session started. With the stateful `message` method, the start time is always present, + * and is set by the service based on the time the session was created. With the stateless `message` method, the + * start time is set by the service in the response to the first message, and should be returned as part of the + * context with each subsequent message in the session. + * + * This value is a UTC time value formatted according to ISO 8601 (for example, `2021-06-26T12:00:00Z` for noon UTC + * on 26 June 2021). + */ + session_start_time?: string; + /** An encoded string that represents the configuration state of the assistant at the beginning of the + * conversation. If you are using the stateless `message` method, save this value and then send it in the context + * of the subsequent message request to avoid disruptions if there are configuration changes during the + * conversation (such as a change to a skill the assistant uses). + */ + state?: string; + /** For internal use only. */ + skip_user_input?: boolean; + } + export namespace MessageContextGlobalSystem { + export namespace Constants { + /** The language code for localization in the user input. The specified locale overrides the default for the assistant, and is used for interpreting entity values in user input such as date values. For example, `04/03/2018` might be interpreted either as April 3 or March 4, depending on the locale. This property is included only if the new system entities are enabled for the skill. */ + export enum Locale { + EN_US = 'en-us', + EN_CA = 'en-ca', + EN_GB = 'en-gb', + AR_AR = 'ar-ar', + CS_CZ = 'cs-cz', + DE_DE = 'de-de', + ES_ES = 'es-es', + FR_FR = 'fr-fr', + IT_IT = 'it-it', + JA_JP = 'ja-jp', + KO_KR = 'ko-kr', + NL_NL = 'nl-nl', + PT_BR = 'pt-br', + ZH_CN = 'zh-cn', + ZH_TW = 'zh-tw', + } + } + } + + /** + * System context data used by the skill. + * + * This type supports additional properties of type any. For internal use only. + */ + export interface MessageContextSkillSystem { + /** An encoded string that represents the current conversation state. By saving this value and then sending it + * in the context of a subsequent message request, you can return to an earlier point in the conversation. If you + * are using stateful sessions, you can also use a stored state value to restore a paused conversation whose + * session is expired. + */ + state?: string; + + /** + * MessageContextSkillSystem accepts additional properties of type any. For internal use only. + */ + [propName: string]: any; + } + + /** + * Context data specific to particular skills used by the assistant. + */ + export interface MessageContextSkills { + /** Context variables that are used by the dialog skill. */ + 'main skill'?: MessageContextDialogSkill; + /** Context variables that are used by the action skill. Private variables are persisted, but not shown. */ + 'actions skill'?: MessageContextActionSkill; + } + + /** + * An input object that includes the input text. + */ + export interface MessageInput { + /** The type of the message: + * + * - `text`: The user input is processed normally by the assistant. + * - `search`: Only search results are returned. (Any dialog or action skill is bypassed.) + * + * **Note:** A `search` message results in an error if no search skill is configured for the assistant. + */ + message_type?: MessageInput.Constants.MessageType | string; + /** The text of the user input. This string cannot contain carriage return, newline, or tab characters. */ + text?: string; + /** Intents to use when evaluating the user input. Include intents from the previous response to continue using + * those intents rather than trying to recognize intents in the new input. + */ + intents?: RuntimeIntent[]; + /** Entities to use when evaluating the message. Include entities from the previous response to continue using + * those entities rather than detecting entities in the new input. + */ + entities?: RuntimeEntity[]; + /** For internal use only. */ + suggestion_id?: string; + /** An array of multimedia attachments to be sent with the message. Attachments are not processed by the + * assistant itself, but can be sent to external services by webhooks. + * + * **Note:** Attachments are not supported on IBM Cloud Pak for Data. + */ + attachments?: MessageInputAttachment[]; + /** An optional object containing analytics data. Currently, this data is used only for events sent to the + * Segment extension. + */ + analytics?: RequestAnalytics; + /** Optional properties that control how the assistant responds. */ + options?: MessageInputOptions; + } + export namespace MessageInput { + export namespace Constants { + /** The type of the message: - `text`: The user input is processed normally by the assistant. - `search`: Only search results are returned. (Any dialog or action skill is bypassed.) **Note:** A `search` message results in an error if no search skill is configured for the assistant. */ + export enum MessageType { + TEXT = 'text', + SEARCH = 'search', + } + } + } + + /** + * A reference to a media file to be sent as an attachment with the message. + */ + export interface MessageInputAttachment { + /** The URL of the media file. */ + url: string; + /** The media content type (such as a MIME type) of the attachment. */ + media_type?: string; + } + + /** + * Optional properties that control how the assistant responds. + */ + export interface MessageInputOptions { + /** Whether to restart dialog processing at the root of the dialog, regardless of any previously visited nodes. + * **Note:** This does not affect `turn_count` or any other context variables. + */ + restart?: boolean; + /** Whether to return more than one intent. Set to `true` to return all matching intents. */ + alternate_intents?: boolean; + /** Whether custom extension callouts are executed asynchronously. Asynchronous execution means the response to + * the extension callout will be processed on the subsequent message call, the initial message response signals to + * the client that the operation may be long running. With synchronous execution the custom extension is executed + * and returns the response in a single message turn. **Note:** **async_callout** defaults to true for API versions + * earlier than 2023-06-15. + */ + async_callout?: boolean; + /** Spelling correction options for the message. Any options specified on an individual message override the + * settings configured for the skill. + */ + spelling?: MessageInputOptionsSpelling; + /** Whether to return additional diagnostic information. Set to `true` to return additional information in the + * `output.debug` property. If you also specify **return_context**=`true`, the returned skill context includes the + * `system.state` property. + */ + debug?: boolean; + /** Whether to return session context with the response. If you specify `true`, the response includes the + * `context` property. If you also specify **debug**=`true`, the returned skill context includes the `system.state` + * property. + */ + return_context?: boolean; + /** Whether to return session context, including full conversation state. If you specify `true`, the response + * includes the `context` property, and the skill context includes the `system.state` property. + * + * **Note:** If **export**=`true`, the context is returned regardless of the value of **return_context**. + */ + export?: boolean; + } + + /** + * Spelling correction options for the message. Any options specified on an individual message override the settings + * configured for the skill. + */ + export interface MessageInputOptionsSpelling { + /** Whether to use spelling correction when processing the input. If spelling correction is used and + * **auto_correct** is `true`, any spelling corrections are automatically applied to the user input. If + * **auto_correct** is `false`, any suggested corrections are returned in the **output.spelling** property. + * + * This property overrides the value of the **spelling_suggestions** property in the workspace settings for the + * skill. + */ + suggestions?: boolean; + /** Whether to use autocorrection when processing the input. If this property is `true`, any corrections are + * automatically applied to the user input, and the original text is returned in the **output.spelling** property + * of the message response. This property overrides the value of the **spelling_auto_correct** property in the + * workspace settings for the skill. + */ + auto_correct?: boolean; + } + + /** + * Assistant output to be rendered or processed by the client. + */ + export interface MessageOutput { + /** Output intended for any channel. It is the responsibility of the client application to implement the + * supported response types. + */ + generic?: RuntimeResponseGeneric[]; + /** An array of intents recognized in the user input, sorted in descending order of confidence. */ + intents?: RuntimeIntent[]; + /** An array of entities identified in the user input. */ + entities?: RuntimeEntity[]; + /** An array of objects describing any actions requested by the dialog node. */ + actions?: DialogNodeAction[]; + /** Additional detailed information about a message response and how it was generated. */ + debug?: MessageOutputDebug; + /** An object containing any custom properties included in the response. This object includes any arbitrary + * properties defined in the dialog JSON editor as part of the dialog node output. + */ + user_defined?: JsonObject; + /** Properties describing any spelling corrections in the user input that was received. */ + spelling?: MessageOutputSpelling; + /** An array of objects that provide information about calls to large language models that occured as part of + * handling this message. + */ + llm_metadata?: MessageOutputLLMMetadata[]; + } + + /** + * Additional detailed information about a message response and how it was generated. + */ + export interface MessageOutputDebug { + /** An array of objects containing detailed diagnostic information about dialog nodes that were visited during + * processing of the input message. + */ + nodes_visited?: DialogNodeVisited[]; + /** An array of up to 50 messages logged with the request. */ + log_messages?: DialogLogMessage[]; + /** Assistant sets this to true when this message response concludes or interrupts a dialog. */ + branch_exited?: boolean; + /** When `branch_exited` is set to `true` by the assistant, the `branch_exited_reason` specifies whether the + * dialog completed by itself or got interrupted. + */ + branch_exited_reason?: MessageOutputDebug.Constants.BranchExitedReason | string; + /** An array of objects containing detailed diagnostic information about dialog nodes and actions that were + * visited during processing of the input message. + * + * This property is present only if the assistant has an action skill. + */ + turn_events?: MessageOutputDebugTurnEvent[]; + } + export namespace MessageOutputDebug { + export namespace Constants { + /** When `branch_exited` is set to `true` by the assistant, the `branch_exited_reason` specifies whether the dialog completed by itself or got interrupted. */ + export enum BranchExitedReason { + COMPLETED = 'completed', + FALLBACK = 'fallback', + } + } + } + + /** + * MessageOutputDebugTurnEvent. + */ + export interface MessageOutputDebugTurnEvent { + } + + /** + * MessageOutputLLMMetadata. + */ + export interface MessageOutputLLMMetadata { + /** The task that used a large language model. */ + task?: string; + /** The id for the large language model used for the task. */ + model_id?: string; + } + + /** + * Properties describing any spelling corrections in the user input that was received. + */ + export interface MessageOutputSpelling { + /** The user input text that was used to generate the response. If spelling autocorrection is enabled, this text + * reflects any spelling corrections that were applied. + */ + text?: string; + /** The original user input text. This property is returned only if autocorrection is enabled and the user input + * was corrected. + */ + original_text?: string; + /** Any suggested corrections of the input text. This property is returned only if spelling correction is + * enabled and autocorrection is disabled. + */ + suggested_text?: string; + } + + /** + * Contains meta-information about the item(s) being streamed. + */ + export interface MessageStreamMetadata { + /** Contains meta-information about the item(s) being streamed. */ + streaming_metadata: Metadata; + } + + /** + * A streamed response from the watsonx Assistant service. + */ + export interface MessageStreamResponse { + } + + /** + * Contains meta-information about the item(s) being streamed. + */ + export interface Metadata { + /** Identifies the index and sequence of the current streamed response item. */ + id?: number; + } + + /** + * MonitorAssistantReleaseImportArtifactResponse. + */ + export interface MonitorAssistantReleaseImportArtifactResponse { + /** The current status of the release import process: + * - **Completed**: The artifact import has completed. + * - **Failed**: The asynchronous artifact import process has failed. + * - **Processing**: An asynchronous operation to import the artifact is underway and not yet completed. + */ + status?: MonitorAssistantReleaseImportArtifactResponse.Constants.Status | string; + /** A unique identifier for a background asynchronous task that is executing or has executed the operation. */ + task_id?: string; + /** The ID of the assistant to which the release belongs. */ + assistant_id?: string; + /** An array of messages about errors that caused an asynchronous operation to fail. Included only if + * **status**=`Failed`. + */ + status_errors?: StatusError[]; + /** The description of the failed asynchronous operation. Included only if **status**=`Failed`. */ + status_description?: string; + /** An array of skill types in the draft environment which will be overridden with skills from the artifact + * being imported. + */ + skill_impact_in_draft?: MonitorAssistantReleaseImportArtifactResponse.Constants.SkillImpactInDraft[] | string[]; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + export namespace MonitorAssistantReleaseImportArtifactResponse { + export namespace Constants { + /** The current status of the release import process: - **Completed**: The artifact import has completed. - **Failed**: The asynchronous artifact import process has failed. - **Processing**: An asynchronous operation to import the artifact is underway and not yet completed. */ + export enum Status { + COMPLETED = 'Completed', + FAILED = 'Failed', + PROCESSING = 'Processing', + } + /** An array of skill types in the draft environment which will be overridden with skills from the artifact being imported. */ + export enum SkillImpactInDraft { + ACTION = 'action', + DIALOG = 'dialog', + } + } + } + + /** + * The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + export interface Pagination { + /** The URL that will return the same page of results. */ + refresh_url: string; + /** The URL that will return the next page of results. */ + next_url?: string; + /** The total number of objects that satisfy the request. This total includes all results, not just those + * included in the current page. + */ + total?: number; + /** Reserved for future use. */ + matched?: number; + /** A token identifying the current page of results. */ + refresh_cursor?: string; + /** A token identifying the next page of results. */ + next_cursor?: string; + } + + /** + * Message response partial item content. + */ + export interface PartialItem { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type?: string; + /** The text within the partial chunk of the message stream response. */ + text: string; + /** Contains meta-information about the item(s) being streamed. */ + streaming_metadata: Metadata; + } + + /** + * Non-private settings for oauth2 authentication. + */ + export interface ProviderAuthenticationOAuth2 { + /** The preferred "flow" or "grant type" for the API client to fetch an access token from the authorization + * server. + */ + preferred_flow?: ProviderAuthenticationOAuth2.Constants.PreferredFlow | string; + /** Scenarios performed by the API client to fetch an access token from the authorization server. */ + flows?: ProviderAuthenticationOAuth2Flows; + } + export namespace ProviderAuthenticationOAuth2 { + export namespace Constants { + /** The preferred "flow" or "grant type" for the API client to fetch an access token from the authorization server. */ + export enum PreferredFlow { + PASSWORD = 'password', + CLIENT_CREDENTIALS = 'client_credentials', + AUTHORIZATION_CODE = 'authorization_code', + CUSTOM_FLOW_NAME = '<$custom_flow_name>', + } + } + } + + /** + * Scenarios performed by the API client to fetch an access token from the authorization server. + */ + export interface ProviderAuthenticationOAuth2Flows { + } + + /** + * The username for oauth2 authentication when the preferred flow is "password". + */ + export interface ProviderAuthenticationOAuth2PasswordUsername { + /** The type of property observed in "value". */ + type?: ProviderAuthenticationOAuth2PasswordUsername.Constants.Type | string; + /** The stored information of the value. */ + value?: string; + } + export namespace ProviderAuthenticationOAuth2PasswordUsername { + export namespace Constants { + /** The type of property observed in "value". */ + export enum Type { + VALUE = 'value', + } + } + } + + /** + * ProviderAuthenticationTypeAndValue. + */ + export interface ProviderAuthenticationTypeAndValue { + /** The type of property observed in "value". */ + type?: ProviderAuthenticationTypeAndValue.Constants.Type | string; + /** The stored information of the value. */ + value?: string; + } + export namespace ProviderAuthenticationTypeAndValue { + export namespace Constants { + /** The type of property observed in "value". */ + export enum Type { + VALUE = 'value', + } + } + } + + /** + * ProviderCollection. + */ + export interface ProviderCollection { + /** An array of objects describing the conversational skill providers associated with the instance. */ + conversational_skill_providers: ProviderResponse[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * Private information of the provider. + */ + export interface ProviderPrivate { + /** Private authentication information of the provider. */ + authentication: ProviderPrivateAuthentication; + } + + /** + * Private authentication information of the provider. + */ + export interface ProviderPrivateAuthentication { + } + + /** + * Scenarios performed by the API client to fetch an access token from the authorization server. + */ + export interface ProviderPrivateAuthenticationOAuth2FlowFlows { + } + + /** + * The password for oauth2 authentication when the preferred flow is "password". + */ + export interface ProviderPrivateAuthenticationOAuth2PasswordPassword { + /** The type of property observed in "value". */ + type?: ProviderPrivateAuthenticationOAuth2PasswordPassword.Constants.Type | string; + /** The stored information of the value. */ + value?: string; + } + export namespace ProviderPrivateAuthenticationOAuth2PasswordPassword { + export namespace Constants { + /** The type of property observed in "value". */ + export enum Type { + VALUE = 'value', + } + } + } + + /** + * ProviderResponse. + */ + export interface ProviderResponse { + /** The unique identifier of the provider. */ + provider_id?: string; + /** The specification of the provider. */ + specification?: ProviderResponseSpecification; + } + + /** + * The specification of the provider. + */ + export interface ProviderResponseSpecification { + /** An array of objects defining all endpoints of the provider. + * + * **Note:** Multiple array items are reserved for future use. + */ + servers?: ProviderResponseSpecificationServersItem[]; + /** An object defining various reusable definitions of the provider. */ + components?: ProviderResponseSpecificationComponents; + } + + /** + * An object defining various reusable definitions of the provider. + */ + export interface ProviderResponseSpecificationComponents { + /** The definition of the security scheme for the provider. */ + securitySchemes?: ProviderResponseSpecificationComponentsSecuritySchemes; + } + + /** + * The definition of the security scheme for the provider. + */ + export interface ProviderResponseSpecificationComponentsSecuritySchemes { + /** The authentication method required for requests made from watsonx Assistant to the conversational skill + * provider. + */ + authentication_method?: ProviderResponseSpecificationComponentsSecuritySchemes.Constants.AuthenticationMethod | string; + /** Non-private settings for basic access authentication. */ + basic?: ProviderResponseSpecificationComponentsSecuritySchemesBasic; + /** Non-private settings for oauth2 authentication. */ + oauth2?: ProviderAuthenticationOAuth2; + } + export namespace ProviderResponseSpecificationComponentsSecuritySchemes { + export namespace Constants { + /** The authentication method required for requests made from watsonx Assistant to the conversational skill provider. */ + export enum AuthenticationMethod { + BASIC = 'basic', + BEARER = 'bearer', + API_KEY = 'api_key', + OAUTH2 = 'oauth2', + NONE = 'none', + } + } + } + + /** + * Non-private settings for basic access authentication. + */ + export interface ProviderResponseSpecificationComponentsSecuritySchemesBasic { + /** The username for basic access authentication. */ + username?: ProviderAuthenticationTypeAndValue; + } + + /** + * ProviderResponseSpecificationServersItem. + */ + export interface ProviderResponseSpecificationServersItem { + /** The URL of the conversational skill provider. */ + url?: string; + } + + /** + * The specification of the provider. + */ + export interface ProviderSpecification { + /** An array of objects defining all endpoints of the provider. + * + * **Note:** Multiple array items are reserved for future use. + */ + servers: ProviderSpecificationServersItem[]; + /** An object defining various reusable definitions of the provider. */ + components?: ProviderSpecificationComponents; + } + + /** + * An object defining various reusable definitions of the provider. + */ + export interface ProviderSpecificationComponents { + /** The definition of the security scheme for the provider. */ + securitySchemes?: ProviderSpecificationComponentsSecuritySchemes; + } + + /** + * The definition of the security scheme for the provider. + */ + export interface ProviderSpecificationComponentsSecuritySchemes { + /** The authentication method required for requests made from watsonx Assistant to the conversational skill + * provider. + */ + authentication_method?: ProviderSpecificationComponentsSecuritySchemes.Constants.AuthenticationMethod | string; + /** Non-private settings for basic access authentication. */ + basic?: ProviderSpecificationComponentsSecuritySchemesBasic; + /** Non-private settings for oauth2 authentication. */ + oauth2?: ProviderAuthenticationOAuth2; + } + export namespace ProviderSpecificationComponentsSecuritySchemes { + export namespace Constants { + /** The authentication method required for requests made from watsonx Assistant to the conversational skill provider. */ + export enum AuthenticationMethod { + BASIC = 'basic', + BEARER = 'bearer', + API_KEY = 'api_key', + OAUTH2 = 'oauth2', + NONE = 'none', + } + } + } + + /** + * Non-private settings for basic access authentication. + */ + export interface ProviderSpecificationComponentsSecuritySchemesBasic { + /** The username for basic access authentication. */ + username?: ProviderAuthenticationTypeAndValue; + } + + /** + * ProviderSpecificationServersItem. + */ + export interface ProviderSpecificationServersItem { + /** The URL of the conversational skill provider. */ + url?: string; + } + + /** + * Release. + */ + export interface Release { + /** The name of the release. The name is the version number (an integer), returned as a string. */ + release?: string; + /** The description of the release. */ + description?: string; + /** An array of objects describing the environments where this release has been deployed. */ + environment_references?: EnvironmentReference[]; + /** An object identifying the versionable content objects (such as skill snapshots) that are included in the + * release. + */ + content?: ReleaseContent; + /** The current status of the release: + * - **Available**: The release is available for deployment. + * - **Failed**: An asynchronous publish operation has failed. + * - **Processing**: An asynchronous publish operation has not yet completed. + */ + status?: Release.Constants.Status | string; + /** The timestamp for creation of the object. */ + created?: string; + /** The timestamp for the most recent update to the object. */ + updated?: string; + } + export namespace Release { + export namespace Constants { + /** The current status of the release: - **Available**: The release is available for deployment. - **Failed**: An asynchronous publish operation has failed. - **Processing**: An asynchronous publish operation has not yet completed. */ + export enum Status { + AVAILABLE = 'Available', + FAILED = 'Failed', + PROCESSING = 'Processing', + } + } + } + + /** + * ReleaseCollection. + */ + export interface ReleaseCollection { + /** An array of objects describing the releases associated with an assistant. */ + releases: Release[]; + /** The pagination data for the returned objects. For more information about using pagination, see + * [Pagination](#pagination). + */ + pagination: Pagination; + } + + /** + * An object identifying the versionable content objects (such as skill snapshots) that are included in the release. + */ + export interface ReleaseContent { + /** The skill snapshots that are included in the release. */ + skills?: ReleaseSkill[]; + } + + /** + * ReleaseSkill. + */ + export interface ReleaseSkill { + /** The skill ID of the skill. */ + skill_id: string; + /** The type of the skill. */ + type?: ReleaseSkill.Constants.Type | string; + /** The name of the skill snapshot that is saved as part of the release (for example, `draft` or `1`). */ + snapshot?: string; + } + export namespace ReleaseSkill { + export namespace Constants { + /** The type of the skill. */ + export enum Type { + DIALOG = 'dialog', + ACTION = 'action', + SEARCH = 'search', + } + } + } + + /** + * An optional object containing analytics data. Currently, this data is used only for events sent to the Segment + * extension. + */ + export interface RequestAnalytics { + /** The browser that was used to send the message that triggered the event. */ + browser?: string; + /** The type of device that was used to send the message that triggered the event. */ + device?: string; + /** The URL of the web page that was used to send the message that triggered the event. */ + pageUrl?: string; + } + + /** + * ResponseGenericChannel. + */ + export interface ResponseGenericChannel { + /** A channel for which the response is intended. */ + channel?: string; + } + + /** + * ResponseGenericCitation. + */ + export interface ResponseGenericCitation { + /** The title of the citation text. */ + title: string; + /** The text of the citation. */ + text: string; + /** The body content of the citation. */ + body: string; + /** The index of the search_result where the citation is generated. */ + search_result_index?: number; + /** The offsets of the start and end of the citation in the generated response. For example, `ranges:[ { + * start:0, end:5 }, ...]`. + */ + ranges: ResponseGenericCitationRangesItem[]; + } + + /** + * ResponseGenericCitationRangesItem. + */ + export interface ResponseGenericCitationRangesItem { + /** The offset of the start of the citation in the generated response. */ + start?: number; + /** The offset of the end of the citation in the generated response. */ + end?: number; + } + + /** + * The confidence scores for determining whether to show the generated response or an “I don't know” response. + */ + export interface ResponseGenericConfidenceScores { + /** The confidence score threshold. If either the pre_gen or post_gen score is below this threshold, it shows an + * “I don't know” response to replace the generated text. You can configure the threshold in either the user + * interface or through the Update skill API. For more information, see the [watsonx Assistant documentation]( + * https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-conversational-search#behavioral-tuning-conversational-search). + */ + threshold?: number; + /** The confidence score based on user query and search results. */ + pre_gen?: number; + /** The confidence score based on user query, search results, and the generated response. */ + post_gen?: number; + /** It indicates how extractive the generated response is from the search results. */ + extractiveness?: number; + } + + /** + * The entity value that was recognized in the user input. + */ + export interface RuntimeEntity { + /** An entity detected in the input. */ + entity: string; + /** An array of zero-based character offsets that indicate where the detected entity values begin and end in the + * input text. + */ + location?: number[]; + /** The term in the input text that was recognized as an entity value. */ + value: string; + /** A decimal percentage that represents confidence in the recognized entity. */ + confidence?: number; + /** The recognized capture groups for the entity, as defined by the entity pattern. */ + groups?: CaptureGroup[]; + /** An object containing detailed information about the entity recognized in the user input. This property is + * included only if the new system entities are enabled for the skill. + * + * For more information about how the new system entities are interpreted, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-beta-system-entities). + */ + interpretation?: RuntimeEntityInterpretation; + /** An array of possible alternative values that the user might have intended instead of the value returned in + * the **value** property. This property is returned only for `@sys-time` and `@sys-date` entities when the user's + * input is ambiguous. + * + * This property is included only if the new system entities are enabled for the skill. + */ + alternatives?: RuntimeEntityAlternative[]; + /** An object describing the role played by a system entity that is specifies the beginning or end of a range + * recognized in the user input. This property is included only if the new system entities are enabled for the + * skill. + */ + role?: RuntimeEntityRole; + /** The skill that recognized the entity value. Currently, the only possible values are `main skill` for the + * dialog skill (if enabled) and `actions skill` for the action skill. + * + * This property is present only if the assistant has both a dialog skill and an action skill. + */ + skill?: string; + } + + /** + * An alternative value for the recognized entity. + */ + export interface RuntimeEntityAlternative { + /** The entity value that was recognized in the user input. */ + value?: string; + /** A decimal percentage that represents confidence in the recognized entity. */ + confidence?: number; + } + + /** + * RuntimeEntityInterpretation. + */ + export interface RuntimeEntityInterpretation { + /** The calendar used to represent a recognized date (for example, `Gregorian`). */ + calendar_type?: string; + /** A unique identifier used to associate a recognized time and date. If the user input contains a date and time + * that are mentioned together (for example, `Today at 5`, the same **datetime_link** value is returned for both + * the `@sys-date` and `@sys-time` entities). + */ + datetime_link?: string; + /** A locale-specific holiday name (such as `thanksgiving` or `christmas`). This property is included when a + * `@sys-date` entity is recognized based on a holiday name in the user input. + */ + festival?: string; + /** The precision or duration of a time range specified by a recognized `@sys-time` or `@sys-date` entity. */ + granularity?: RuntimeEntityInterpretation.Constants.Granularity | string; + /** A unique identifier used to associate multiple recognized `@sys-date`, `@sys-time`, or `@sys-number` + * entities that are recognized as a range of values in the user's input (for example, `from July 4 until July 14` + * or `from 20 to 25`). + */ + range_link?: string; + /** The word in the user input that indicates that a `sys-date` or `sys-time` entity is part of an implied range + * where only one date or time is specified (for example, `since` or `until`). + */ + range_modifier?: string; + /** A recognized mention of a relative day, represented numerically as an offset from the current date (for + * example, `-1` for `yesterday` or `10` for `in ten days`). + */ + relative_day?: number; + /** A recognized mention of a relative month, represented numerically as an offset from the current month (for + * example, `1` for `next month` or `-3` for `three months ago`). + */ + relative_month?: number; + /** A recognized mention of a relative week, represented numerically as an offset from the current week (for + * example, `2` for `in two weeks` or `-1` for `last week). + */ + relative_week?: number; + /** A recognized mention of a relative date range for a weekend, represented numerically as an offset from the + * current weekend (for example, `0` for `this weekend` or `-1` for `last weekend`). + */ + relative_weekend?: number; + /** A recognized mention of a relative year, represented numerically as an offset from the current year (for + * example, `1` for `next year` or `-5` for `five years ago`). + */ + relative_year?: number; + /** A recognized mention of a specific date, represented numerically as the date within the month (for example, + * `30` for `June 30`.). + */ + specific_day?: number; + /** A recognized mention of a specific day of the week as a lowercase string (for example, `monday`). */ + specific_day_of_week?: string; + /** A recognized mention of a specific month, represented numerically (for example, `7` for `July`). */ + specific_month?: number; + /** A recognized mention of a specific quarter, represented numerically (for example, `3` for `the third + * quarter`). + */ + specific_quarter?: number; + /** A recognized mention of a specific year (for example, `2016`). */ + specific_year?: number; + /** A recognized numeric value, represented as an integer or double. */ + numeric_value?: number; + /** The type of numeric value recognized in the user input (`integer` or `rational`). */ + subtype?: string; + /** A recognized term for a time that was mentioned as a part of the day in the user's input (for example, + * `morning` or `afternoon`). + */ + part_of_day?: string; + /** A recognized mention of a relative hour, represented numerically as an offset from the current hour (for + * example, `3` for `in three hours` or `-1` for `an hour ago`). + */ + relative_hour?: number; + /** A recognized mention of a relative time, represented numerically as an offset in minutes from the current + * time (for example, `5` for `in five minutes` or `-15` for `fifteen minutes ago`). + */ + relative_minute?: number; + /** A recognized mention of a relative time, represented numerically as an offset in seconds from the current + * time (for example, `10` for `in ten seconds` or `-30` for `thirty seconds ago`). + */ + relative_second?: number; + /** A recognized specific hour mentioned as part of a time value (for example, `10` for `10:15 AM`.). */ + specific_hour?: number; + /** A recognized specific minute mentioned as part of a time value (for example, `15` for `10:15 AM`.). */ + specific_minute?: number; + /** A recognized specific second mentioned as part of a time value (for example, `30` for `10:15:30 AM`.). */ + specific_second?: number; + /** A recognized time zone mentioned as part of a time value (for example, `EST`). */ + timezone?: string; + } + export namespace RuntimeEntityInterpretation { + export namespace Constants { + /** The precision or duration of a time range specified by a recognized `@sys-time` or `@sys-date` entity. */ + export enum Granularity { + DAY = 'day', + FORTNIGHT = 'fortnight', + HOUR = 'hour', + INSTANT = 'instant', + MINUTE = 'minute', + MONTH = 'month', + QUARTER = 'quarter', + SECOND = 'second', + WEEK = 'week', + WEEKEND = 'weekend', + YEAR = 'year', + } + } + } + + /** + * An object describing the role played by a system entity that is specifies the beginning or end of a range + * recognized in the user input. This property is included only if the new system entities are enabled for the skill. + */ + export interface RuntimeEntityRole { + /** The relationship of the entity to the range. */ + type?: RuntimeEntityRole.Constants.Type | string; + } + export namespace RuntimeEntityRole { + export namespace Constants { + /** The relationship of the entity to the range. */ + export enum Type { + DATE_FROM = 'date_from', + DATE_TO = 'date_to', + NUMBER_FROM = 'number_from', + NUMBER_TO = 'number_to', + TIME_FROM = 'time_from', + TIME_TO = 'time_to', + } + } + } + + /** + * An intent identified in the user input. + */ + export interface RuntimeIntent { + /** The name of the recognized intent. */ + intent: string; + /** A decimal percentage that represents confidence in the intent. If you are specifying an intent as part of a + * request, but you do not have a calculated confidence value, specify `1`. + */ + confidence?: number; + /** The skill that identified the intent. Currently, the only possible values are `main skill` for the dialog + * skill (if enabled) and `actions skill` for the action skill. + * + * This property is present only if the assistant has both a dialog skill and an action skill. + */ + skill?: string; + } + + /** + * RuntimeResponseGeneric. + */ + export interface RuntimeResponseGeneric { + } + + /** + * SearchResult. + */ + export interface SearchResult { + /** The unique identifier of the document in the Discovery service collection. + * + * This property is included in responses from search skills, which are available only to Plus or Enterprise plan + * users. + */ + id: string; + /** An object containing search result metadata from the Discovery service. */ + result_metadata: SearchResultMetadata; + /** A description of the search result. This is taken from an abstract, summary, or highlight field in the + * Discovery service response, as specified in the search skill configuration. + */ + body?: string; + /** The title of the search result. This is taken from a title or name field in the Discovery service response, + * as specified in the search skill configuration. + */ + title?: string; + /** The URL of the original data object in its native data source. */ + url?: string; + /** An object containing segments of text from search results with query-matching text highlighted using HTML + * `` tags. + */ + highlight?: SearchResultHighlight; + /** An array specifying segments of text within the result that were identified as direct answers to the search + * query. Currently, only the single answer with the highest confidence (if any) is returned. + * + * **Notes:** + * - Answer finding is available only if the search skill is connected to a Discovery v2 service instance. + * - Answer finding is not supported on IBM Cloud Pak for Data. + */ + answers?: SearchResultAnswer[]; + } + + /** + * An object specifing a segment of text that was identified as a direct answer to the search query. + */ + export interface SearchResultAnswer { + /** The text of the answer. */ + text: string; + /** The confidence score for the answer, as returned by the Discovery service. */ + confidence: number; + } + + /** + * An object containing segments of text from search results with query-matching text highlighted using HTML `` + * tags. + * + * This type supports additional properties of type string[]. An array of strings containing segments taken from a + * field in the search results that is not mapped to the `body`, `title`, or `url` property, with query-matching + * substrings highlighted. The property name is the name of the field in the Discovery collection. + */ + export interface SearchResultHighlight { + /** An array of strings containing segments taken from body text in the search results, with query-matching + * substrings highlighted. + */ + body?: string[]; + /** An array of strings containing segments taken from title text in the search results, with query-matching + * substrings highlighted. + */ + title?: string[]; + /** An array of strings containing segments taken from URLs in the search results, with query-matching + * substrings highlighted. + */ + url?: string[]; + + /** + * SearchResultHighlight accepts additional properties of type string[]. An array of strings containing segments + * taken from a field in the search results that is not mapped to the `body`, `title`, or `url` property, with + * query-matching substrings highlighted. The property name is the name of the field in the Discovery collection. + */ + [propName: string]: any; + } + + /** + * An object containing search result metadata from the Discovery service. + */ + export interface SearchResultMetadata { + /** The confidence score for the given result, as returned by the Discovery service. */ + confidence?: number; + /** An unbounded measure of the relevance of a particular result, dependent on the query and matching document. + * A higher score indicates a greater match to the query parameters. + */ + score?: number; + } + + /** + * SearchResults. + */ + export interface SearchResults { + /** The metadata of the search result. */ + result_metadata: SearchResultsResultMetadata; + /** The ID of the search result. It may not be unique. */ + id: string; + /** The title of the search result. */ + title: string; + /** The body content of the search result. */ + body: string; + } + + /** + * The metadata of the search result. + */ + export interface SearchResultsResultMetadata { + /** The source of the search result. */ + document_retrieval_source?: string; + /** The relevance score of the search result to the user query. */ + score?: number; + } + + /** + * An object describing the search skill configuration. + * + * **Note:** Search settings are not supported in **Import skills** requests, and are not included in **Export + * skills** responses. + */ + export interface SearchSettings { + /** Configuration settings for the Watson Discovery service instance used by the search integration. */ + discovery?: SearchSettingsDiscovery; + /** The messages included with responses from the search integration. */ + messages: SearchSettingsMessages; + /** The mapping between fields in the Watson Discovery collection and properties in the search response. */ + schema_mapping: SearchSettingsSchemaMapping; + /** Configuration settings for the Elasticsearch service used by the search integration. You can provide either + * basic auth or apiKey auth. + */ + elastic_search?: SearchSettingsElasticSearch; + /** Configuration settings for conversational search. */ + conversational_search: SearchSettingsConversationalSearch; + /** Configuration settings for the server-side search service used by the search integration. You can provide + * either basic auth, apiKey auth or none. + */ + server_side_search?: SearchSettingsServerSideSearch; + /** Configuration settings for the client-side search service or server-side search service used by the search + * integration. + */ + client_side_search?: SearchSettingsClientSideSearch; + } + + /** + * Configuration settings for the client-side search service or server-side search service used by the search + * integration. + */ + export interface SearchSettingsClientSideSearch { + /** The filter string that is applied to the search results. */ + filter?: string; + /** The metadata object. */ + metadata?: JsonObject; + } + + /** + * Configuration settings for conversational search. + */ + export interface SearchSettingsConversationalSearch { + /** Whether to enable conversational search. */ + enabled: boolean; + response_length?: SearchSettingsConversationalSearchResponseLength; + search_confidence?: SearchSettingsConversationalSearchSearchConfidence; + } + + /** + * SearchSettingsConversationalSearchResponseLength. + */ + export interface SearchSettingsConversationalSearchResponseLength { + /** The response length option. It controls the length of the generated response. */ + option?: SearchSettingsConversationalSearchResponseLength.Constants.Option | string; + } + export namespace SearchSettingsConversationalSearchResponseLength { + export namespace Constants { + /** The response length option. It controls the length of the generated response. */ + export enum Option { + CONCISE = 'concise', + MODERATE = 'moderate', + VERBOSE = 'verbose', + } + } + } + + /** + * SearchSettingsConversationalSearchSearchConfidence. + */ + export interface SearchSettingsConversationalSearchSearchConfidence { + /** The search confidence threshold. + * It controls the tendency for conversational search to produce “I don't know” answers. + */ + threshold?: SearchSettingsConversationalSearchSearchConfidence.Constants.Threshold | string; + } + export namespace SearchSettingsConversationalSearchSearchConfidence { + export namespace Constants { + /** The search confidence threshold. It controls the tendency for conversational search to produce “I don't know” answers. */ + export enum Threshold { + RARELY = 'rarely', + LESS_OFTEN = 'less_often', + MORE_OFTEN = 'more_often', + MOST_OFTEN = 'most_often', + } + } + } + + /** + * Configuration settings for the Watson Discovery service instance used by the search integration. + */ + export interface SearchSettingsDiscovery { + /** The ID for the Watson Discovery service instance. */ + instance_id: string; + /** The ID for the Watson Discovery project. */ + project_id: string; + /** The URL for the Watson Discovery service instance. */ + url: string; + /** The maximum number of primary results to include in the response. */ + max_primary_results?: number; + /** The maximum total number of primary and additional results to include in the response. */ + max_total_results?: number; + /** The minimum confidence threshold for included results. Any results with a confidence below this threshold + * will be discarded. + */ + confidence_threshold?: number; + /** Whether to include the most relevant passages of text in the **highlight** property of each result. */ + highlight?: boolean; + /** Whether to use the answer finding feature to emphasize answers within highlighted passages. This property is + * ignored if **highlight**=`false`. + * + * **Notes:** + * - Answer finding is available only if the search skill is connected to a Discovery v2 service instance. + * - Answer finding is not supported on IBM Cloud Pak for Data. + */ + find_answers?: boolean; + /** Authentication information for the Watson Discovery service. For more information, see the [Watson Discovery + * documentation](https://cloud.ibm.com/apidocs/discovery-data#authentication). + * + * **Note:** You must specify either **basic** or **bearer**, but not both. + */ + authentication: SearchSettingsDiscoveryAuthentication; + } + + /** + * Authentication information for the Watson Discovery service. For more information, see the [Watson Discovery + * documentation](https://cloud.ibm.com/apidocs/discovery-data#authentication). + * + * **Note:** You must specify either **basic** or **bearer**, but not both. + */ + export interface SearchSettingsDiscoveryAuthentication { + /** The HTTP basic authentication credentials for Watson Discovery. Specify your Watson Discovery API key in the + * format `apikey:{apikey}`. + */ + basic?: string; + /** The authentication bearer token for Watson Discovery. */ + bearer?: string; + } + + /** + * Configuration settings for the Elasticsearch service used by the search integration. You can provide either basic + * auth or apiKey auth. + */ + export interface SearchSettingsElasticSearch { + /** The URL for the Elasticsearch service. */ + url: string; + /** The port number for the Elasticsearch service URL. + * + * **Note:** It can be omitted if a port number is appended to the URL. + */ + port: string; + /** The username of the basic authentication method. */ + username?: string; + /** The password of the basic authentication method. The credentials are not returned due to security reasons. */ + password?: string; + /** The Elasticsearch index to use for the search integration. */ + index: string; + /** An array of filters that can be applied to the search results via the `$FILTER` variable in the + * `query_body`.For more information, see [Elasticsearch filter + * documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/filter-search-results.html). + */ + filter?: any[]; + /** The Elasticsearch query object. For more information, see [Elasticsearch search API + * documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html). + */ + query_body?: JsonObject; + /** The Elasticsearch index for uploading documents. It is created automatically when the upload document option + * is selected from the user interface. + */ + managed_index?: string; + /** The API key of the apiKey authentication method. Use either basic auth or apiKey auth. The credentials are + * not returned due to security reasons. + */ + apikey?: string; + } + + /** + * The messages included with responses from the search integration. + */ + export interface SearchSettingsMessages { + /** The message to include in the response to a successful query. */ + success: string; + /** The message to include in the response when the query encounters an error. */ + error: string; + /** The message to include in the response when there is no result from the query. */ + no_result: string; + } + + /** + * The mapping between fields in the Watson Discovery collection and properties in the search response. + */ + export interface SearchSettingsSchemaMapping { + /** The field in the collection to map to the **url** property of the response. */ + url: string; + /** The field in the collection to map to the **body** property in the response. */ + body: string; + /** The field in the collection to map to the **title** property for the schema. */ + title: string; + } + + /** + * Configuration settings for the server-side search service used by the search integration. You can provide either + * basic auth, apiKey auth or none. + */ + export interface SearchSettingsServerSideSearch { + /** The URL of the server-side search service. */ + url: string; + /** The port number of the server-side search service. */ + port?: string; + /** The username of the basic authentication method. */ + username?: string; + /** The password of the basic authentication method. The credentials are not returned due to security reasons. */ + password?: string; + /** The filter string that is applied to the search results. */ + filter?: string; + /** The metadata object. */ + metadata?: JsonObject; + /** The API key of the apiKey authentication method. The credentails are not returned due to security reasons. */ + apikey?: string; + /** To clear previous auth, specify `no_auth = true`. */ + no_auth?: boolean; + /** The authorization type that is used. */ + auth_type?: SearchSettingsServerSideSearch.Constants.AuthType | string; + } + export namespace SearchSettingsServerSideSearch { + export namespace Constants { + /** The authorization type that is used. */ + export enum AuthType { + BASIC = 'basic', + APIKEY = 'apikey', + NONE = 'none', + } + } + } + + /** + * A warning describing an error in the search skill configuration. + */ + export interface SearchSkillWarning { + /** The error code. */ + code?: string; + /** The location of the error in the search skill configuration object. */ + path?: string; + /** The error message. */ + message?: string; + } + + /** + * SessionResponse. + */ + export interface SessionResponse { + /** The session ID. */ + session_id: string; + } + + /** + * Skill. + */ + export interface Skill { + /** The name of the skill. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the skill. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** An object containing the conversational content of an action or dialog skill. */ + workspace?: JsonObject; + /** The skill ID of the skill. */ + skill_id?: string; + /** The current status of the skill: + * - **Available**: The skill is available and ready to process messages. + * - **Failed**: An asynchronous operation has failed. See the **status_errors** property for more information + * about the cause of the failure. + * - **Non Existent**: The skill does not exist. + * - **Processing**: An asynchronous operation has not yet completed. + * - **Training**: The skill is training based on new data. + */ + status?: Skill.Constants.Status | string; + /** An array of messages about errors that caused an asynchronous operation to fail. Included only if + * **status**=`Failed`. + */ + status_errors?: StatusError[]; + /** The description of the failed asynchronous operation. Included only if **status**=`Failed`. */ + status_description?: string; + /** For internal use only. */ + dialog_settings?: JsonObject; + /** The unique identifier of the assistant the skill is associated with. */ + assistant_id?: string; + /** The unique identifier of the workspace that contains the skill content. Included only for action and dialog + * skills. + */ + workspace_id?: string; + /** The unique identifier of the environment where the skill is defined. For action and dialog skills, this is + * always the draft environment. + */ + environment_id?: string; + /** Whether the skill is structurally valid. */ + valid?: boolean; + /** The name that will be given to the next snapshot that is created for the skill. A snapshot of each + * versionable skill is saved for each new release of an assistant. + */ + next_snapshot_version?: string; + /** An object describing the search skill configuration. + * + * **Note:** Search settings are not supported in **Import skills** requests, and are not included in **Export + * skills** responses. + */ + search_settings?: SearchSettings; + /** An array of warnings describing errors with the search skill configuration. Included only for search skills. */ + warnings?: SearchSkillWarning[]; + /** The language of the skill. */ + language: string; + /** The type of skill. */ + type: Skill.Constants.Type | string; + } + export namespace Skill { + export namespace Constants { + /** The current status of the skill: - **Available**: The skill is available and ready to process messages. - **Failed**: An asynchronous operation has failed. See the **status_errors** property for more information about the cause of the failure. - **Non Existent**: The skill does not exist. - **Processing**: An asynchronous operation has not yet completed. - **Training**: The skill is training based on new data. */ + export enum Status { + AVAILABLE = 'Available', + FAILED = 'Failed', + NON_EXISTENT = 'Non Existent', + PROCESSING = 'Processing', + TRAINING = 'Training', + UNAVAILABLE = 'Unavailable', + } + /** The type of skill. */ + export enum Type { + ACTION = 'action', + DIALOG = 'dialog', + SEARCH = 'search', + } + } + } + + /** + * SkillImport. + */ + export interface SkillImport { + /** The name of the skill. This string cannot contain carriage return, newline, or tab characters. */ + name?: string; + /** The description of the skill. This string cannot contain carriage return, newline, or tab characters. */ + description?: string; + /** An object containing the conversational content of an action or dialog skill. */ + workspace?: JsonObject; + /** The skill ID of the skill. */ + skill_id?: string; + /** The current status of the skill: + * - **Available**: The skill is available and ready to process messages. + * - **Failed**: An asynchronous operation has failed. See the **status_errors** property for more information + * about the cause of the failure. + * - **Non Existent**: The skill does not exist. + * - **Processing**: An asynchronous operation has not yet completed. + * - **Training**: The skill is training based on new data. + */ + status?: SkillImport.Constants.Status | string; + /** An array of messages about errors that caused an asynchronous operation to fail. Included only if + * **status**=`Failed`. + */ + status_errors?: StatusError[]; + /** The description of the failed asynchronous operation. Included only if **status**=`Failed`. */ + status_description?: string; + /** For internal use only. */ + dialog_settings?: JsonObject; + /** The unique identifier of the assistant the skill is associated with. */ + assistant_id?: string; + /** The unique identifier of the workspace that contains the skill content. Included only for action and dialog + * skills. + */ + workspace_id?: string; + /** The unique identifier of the environment where the skill is defined. For action and dialog skills, this is + * always the draft environment. + */ + environment_id?: string; + /** Whether the skill is structurally valid. */ + valid?: boolean; + /** The name that will be given to the next snapshot that is created for the skill. A snapshot of each + * versionable skill is saved for each new release of an assistant. + */ + next_snapshot_version?: string; + /** An object describing the search skill configuration. + * + * **Note:** Search settings are not supported in **Import skills** requests, and are not included in **Export + * skills** responses. + */ + search_settings?: SearchSettings; + /** An array of warnings describing errors with the search skill configuration. Included only for search skills. */ + warnings?: SearchSkillWarning[]; + /** The language of the skill. */ + language: string; + /** The type of skill. */ + type: SkillImport.Constants.Type | string; + } + export namespace SkillImport { + export namespace Constants { + /** The current status of the skill: - **Available**: The skill is available and ready to process messages. - **Failed**: An asynchronous operation has failed. See the **status_errors** property for more information about the cause of the failure. - **Non Existent**: The skill does not exist. - **Processing**: An asynchronous operation has not yet completed. - **Training**: The skill is training based on new data. */ + export enum Status { + AVAILABLE = 'Available', + FAILED = 'Failed', + NON_EXISTENT = 'Non Existent', + PROCESSING = 'Processing', + TRAINING = 'Training', + UNAVAILABLE = 'Unavailable', + } + /** The type of skill. */ + export enum Type { + ACTION = 'action', + DIALOG = 'dialog', + } + } + } + + /** + * SkillsAsyncRequestStatus. + */ + export interface SkillsAsyncRequestStatus { + /** The assistant ID of the assistant. */ + assistant_id?: string; + /** The current status of the asynchronous operation: + * - `Available`: An asynchronous export is available. + * - `Completed`: An asynchronous import operation has completed successfully. + * - `Failed`: An asynchronous operation has failed. See the **status_errors** property for more information about + * the cause of the failure. + * - `Processing`: An asynchronous operation has not yet completed. + */ + status?: SkillsAsyncRequestStatus.Constants.Status | string; + /** The description of the failed asynchronous operation. Included only if **status**=`Failed`. */ + status_description?: string; + /** An array of messages about errors that caused an asynchronous operation to fail. Included only if + * **status**=`Failed`. + */ + status_errors?: StatusError[]; + } + export namespace SkillsAsyncRequestStatus { + export namespace Constants { + /** The current status of the asynchronous operation: - `Available`: An asynchronous export is available. - `Completed`: An asynchronous import operation has completed successfully. - `Failed`: An asynchronous operation has failed. See the **status_errors** property for more information about the cause of the failure. - `Processing`: An asynchronous operation has not yet completed. */ + export enum Status { + AVAILABLE = 'Available', + COMPLETED = 'Completed', + FAILED = 'Failed', + PROCESSING = 'Processing', + } + } + } + + /** + * SkillsExport. + */ + export interface SkillsExport { + /** An array of objects describing the skills for the assistant. Included in responses only if + * **status**=`Available`. + */ + assistant_skills: Skill[]; + /** Status information about the skills for the assistant. Included in responses only if **status**=`Available`. */ + assistant_state: AssistantState; + } + + /** + * A response from the watsonx Assistant service. + */ + export interface StatefulMessageResponse { + /** Assistant output to be rendered or processed by the client. */ + output: MessageOutput; + /** Context data for the conversation. You can use this property to access context variables. The context is + * stored by the assistant on a per-session basis. + * + * **Note:** The context is included in message responses only if **return_context**=`true` in the message request. + * Full context is always included in logs. + */ + context?: MessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. + */ + user_id: string; + /** Assistant output to be rendered or processed by the client. All private data is masked or removed. */ + masked_output?: MessageOutput; + /** An input object that includes the input text. All private data is masked or removed. */ + masked_input?: MessageInput; + } + + /** + * Message final response content. + */ + export interface StatelessFinalResponse { + /** Assistant output to be rendered or processed by the client. */ + output?: StatelessFinalResponseOutput; + /** Context data for the conversation. You can use this property to access context variables. The context is + * stored by the assistant on a per-session basis. + * + * **Note:** The context is included in message responses only if **return_context**=`true` in the message request. + * Full context is always included in logs. + */ + context?: StatelessMessageContext; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. + */ + user_id?: string; + } + + /** + * Assistant output to be rendered or processed by the client. + */ + export interface StatelessFinalResponseOutput { + /** Output intended for any channel. It is the responsibility of the client application to implement the + * supported response types. + */ + generic?: RuntimeResponseGeneric[]; + /** An array of intents recognized in the user input, sorted in descending order of confidence. */ + intents?: RuntimeIntent[]; + /** An array of entities identified in the user input. */ + entities?: RuntimeEntity[]; + /** An array of objects describing any actions requested by the dialog node. */ + actions?: DialogNodeAction[]; + /** Additional detailed information about a message response and how it was generated. */ + debug?: MessageOutputDebug; + /** An object containing any custom properties included in the response. This object includes any arbitrary + * properties defined in the dialog JSON editor as part of the dialog node output. + */ + user_defined?: JsonObject; + /** Properties describing any spelling corrections in the user input that was received. */ + spelling?: MessageOutputSpelling; + /** An array of objects that provide information about calls to large language models that occured as part of + * handling this message. + */ + llm_metadata?: MessageOutputLLMMetadata[]; + streaming_metadata: StatelessMessageContext; + } + + /** + * StatelessMessageContext. + */ + export interface StatelessMessageContext { + /** Session context data that is shared by all skills used by the assistant. */ + global?: StatelessMessageContextGlobal; + /** Context data specific to particular skills used by the assistant. */ + skills?: StatelessMessageContextSkills; + /** An object containing context data that is specific to particular integrations. For more information, see the + * [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-integrations). + */ + integrations?: JsonObject; + } + + /** + * Session context data that is shared by all skills used by the assistant. + */ + export interface StatelessMessageContextGlobal { + /** Built-in system properties that apply to all skills used by the assistant. */ + system?: MessageContextGlobalSystem; + /** The unique identifier of the session. */ + session_id?: string; + } + + /** + * Context data specific to particular skills used by the assistant. + */ + export interface StatelessMessageContextSkills { + /** Context variables that are used by the dialog skill. */ + 'main skill'?: MessageContextDialogSkill; + /** Context variables that are used by the action skill. */ + 'actions skill'?: StatelessMessageContextSkillsActionsSkill; + } + + /** + * Context variables that are used by the action skill. + */ + export interface StatelessMessageContextSkillsActionsSkill { + /** An object containing any arbitrary variables that can be read and written by a particular skill. */ + user_defined?: JsonObject; + /** System context data used by the skill. */ + system?: MessageContextSkillSystem; + /** An object containing action variables. Action variables can be accessed only by steps in the same action, + * and do not persist after the action ends. + */ + action_variables?: JsonObject; + /** An object containing skill variables. (In the watsonx Assistant user interface, skill variables are called + * _session variables_.) Skill variables can be accessed by any action and persist for the duration of the session. + */ + skill_variables?: JsonObject; + /** An object containing private action variables. Action variables can be accessed only by steps in the same + * action, and do not persist after the action ends. Private variables are encrypted. + */ + private_action_variables?: JsonObject; + /** An object containing private skill variables. (In the watsonx Assistant user interface, skill variables are + * called _session variables_.) Skill variables can be accessed by any action and persist for the duration of the + * session. Private variables are encrypted. + */ + private_skill_variables?: JsonObject; + } + + /** + * An input object that includes the input text. + */ + export interface StatelessMessageInput { + /** The type of the message: + * + * - `text`: The user input is processed normally by the assistant. + * - `search`: Only search results are returned. (Any dialog or action skill is bypassed.) + * + * **Note:** A `search` message results in an error if no search skill is configured for the assistant. + */ + message_type?: StatelessMessageInput.Constants.MessageType | string; + /** The text of the user input. This string cannot contain carriage return, newline, or tab characters. */ + text?: string; + /** Intents to use when evaluating the user input. Include intents from the previous response to continue using + * those intents rather than trying to recognize intents in the new input. + */ + intents?: RuntimeIntent[]; + /** Entities to use when evaluating the message. Include entities from the previous response to continue using + * those entities rather than detecting entities in the new input. + */ + entities?: RuntimeEntity[]; + /** For internal use only. */ + suggestion_id?: string; + /** An array of multimedia attachments to be sent with the message. Attachments are not processed by the + * assistant itself, but can be sent to external services by webhooks. + * + * **Note:** Attachments are not supported on IBM Cloud Pak for Data. + */ + attachments?: MessageInputAttachment[]; + /** An optional object containing analytics data. Currently, this data is used only for events sent to the + * Segment extension. + */ + analytics?: RequestAnalytics; + /** Optional properties that control how the assistant responds. */ + options?: StatelessMessageInputOptions; + } + export namespace StatelessMessageInput { + export namespace Constants { + /** The type of the message: - `text`: The user input is processed normally by the assistant. - `search`: Only search results are returned. (Any dialog or action skill is bypassed.) **Note:** A `search` message results in an error if no search skill is configured for the assistant. */ + export enum MessageType { + TEXT = 'text', + SEARCH = 'search', + } + } + } + + /** + * Optional properties that control how the assistant responds. + */ + export interface StatelessMessageInputOptions { + /** Whether to restart dialog processing at the root of the dialog, regardless of any previously visited nodes. + * **Note:** This does not affect `turn_count` or any other context variables. + */ + restart?: boolean; + /** Whether to return more than one intent. Set to `true` to return all matching intents. */ + alternate_intents?: boolean; + /** Whether custom extension callouts are executed asynchronously. Asynchronous execution means the response to + * the extension callout will be processed on the subsequent message call, the initial message response signals to + * the client that the operation may be long running. With synchronous execution the custom extension is executed + * and returns the response in a single message turn. **Note:** **async_callout** defaults to true for API versions + * earlier than 2023-06-15. + */ + async_callout?: boolean; + /** Spelling correction options for the message. Any options specified on an individual message override the + * settings configured for the skill. + */ + spelling?: MessageInputOptionsSpelling; + /** Whether to return additional diagnostic information. Set to `true` to return additional information in the + * `output.debug` property. + */ + debug?: boolean; + } + + /** + * A stateless response from the watsonx Assistant service. + */ + export interface StatelessMessageResponse { + /** Assistant output to be rendered or processed by the client. */ + output: MessageOutput; + /** Context data for the conversation. You can use this property to access context variables. The context is not + * stored by the assistant; to maintain session state, include the context from the response in the next message. + */ + context: StatelessMessageContext; + /** Assistant output to be rendered or processed by the client. All private data is masked or removed. */ + masked_output?: MessageOutput; + /** An input object that includes the input text. All private data is masked or removed. */ + masked_input?: MessageInput; + /** A string value that identifies the user who is interacting with the assistant. The client must provide a + * unique identifier for each individual end user who accesses the application. For user-based plans, this user ID + * is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or + * tab characters. If no value is specified in the input, **user_id** is automatically set to the value of + * **context.global.session_id**. + * + * **Note:** This property is the same as the **user_id** property in the global system context. + */ + user_id?: string; + } + + /** + * A stateless streamed response form the watsonx Assistant service. + */ + export interface StatelessMessageStreamResponse { + } + + /** + * An object describing an error that occurred during processing of an asynchronous operation. + */ + export interface StatusError { + /** The text of the error message. */ + message?: string; + } + + /** + * TurnEventActionSource. + */ + export interface TurnEventActionSource { + /** The type of turn event. */ + type?: TurnEventActionSource.Constants.Type | string; + /** An action that was visited during processing of the message. */ + action?: string; + /** The title of the action. */ + action_title?: string; + /** The condition that triggered the dialog node. */ + condition?: string; + } + export namespace TurnEventActionSource { + export namespace Constants { + /** The type of turn event. */ + export enum Type { + ACTION = 'action', + } + } + } + + /** + * TurnEventCalloutCallout. + */ + export interface TurnEventCalloutCallout { + /** The type of callout. Currently, the only supported value is `integration_interaction` (for calls to + * extensions). + */ + type?: TurnEventCalloutCallout.Constants.Type | string; + /** For internal use only. */ + internal?: JsonObject; + /** The name of the variable where the callout result is stored. */ + result_variable?: string; + /** The request object executed to the external server specified by the extension. */ + request?: TurnEventCalloutCalloutRequest; + /** The response object received by the external server made by the extension. */ + response?: TurnEventCalloutCalloutResponse; + } + export namespace TurnEventCalloutCallout { + export namespace Constants { + /** The type of callout. Currently, the only supported value is `integration_interaction` (for calls to extensions). */ + export enum Type { + INTEGRATION_INTERACTION = 'integration_interaction', + } + } + } + + /** + * TurnEventCalloutCalloutRequest. + */ + export interface TurnEventCalloutCalloutRequest { + /** The REST method of the request. */ + method?: TurnEventCalloutCalloutRequest.Constants.Method | string; + /** The host URL of the request call. */ + url?: string; + /** The URL path of the request call. */ + path?: string; + /** Any query parameters appended to the URL of the request call. */ + query_parameters?: string; + /** Any headers included in the request call. */ + headers?: JsonObject; + /** Contains the response of the external server or an object. In cases like timeouts or connections errors, it + * will contain details of why the callout to the external server failed. + */ + body?: JsonObject; + } + export namespace TurnEventCalloutCalloutRequest { + export namespace Constants { + /** The REST method of the request. */ + export enum Method { + GET = 'get', + POST = 'post', + PUT = 'put', + DELETE = 'delete', + PATCH = 'patch', + } + } + } + + /** + * TurnEventCalloutCalloutResponse. + */ + export interface TurnEventCalloutCalloutResponse { + /** The final response string. This response is a composition of every partial chunk received from the stream. */ + body?: string; + /** The final status code of the response. */ + status_code?: number; + /** The response from the last chunk received from the response stream. */ + last_event?: JsonObject; + } + + /** + * TurnEventCalloutError. + */ + export interface TurnEventCalloutError { + /** Any error message returned by a failed call to an external service. */ + message?: string; + } + + /** + * TurnEventGenerativeAICalledCallout. + */ + export interface TurnEventGenerativeAICalledCallout { + /** Whether the document search engine was called. */ + search_called?: boolean; + /** Whether watsonx.ai was called during answer generation. */ + llm_called?: boolean; + search?: TurnEventGenerativeAICalledCalloutSearch; + llm?: TurnEventGenerativeAICalledCalloutLlm; + /** Indicates why a conversational search response resolved to an idk response. This field will only be + * available when the conversational search response is an idk response. + */ + idk_reason_code?: string; + } + + /** + * TurnEventGenerativeAICalledCalloutLlm. + */ + export interface TurnEventGenerativeAICalledCalloutLlm { + /** The name of the LLM engine called by the system. */ + type?: string; + /** The LLM model used to generate the response. */ + model_id?: string; + /** The watsonx.ai class ID that was used during the answer generation request to the LLM. This is only included + * when a request to the LLM has been made by the system. + */ + model_class_id?: string; + /** The number of tokens that were generated in the response by the LLM. This is only included when a request to + * the LLM was successful and a response was generated. + */ + generated_token_count?: number; + /** The number of tokens that were sent to the LLM during answer generation. This is only included when a + * request to the LLM has been made by the system. + */ + input_token_count?: number; + /** Whether the answer generation request to the LLM was successful. */ + success?: boolean; + response?: TurnEventGenerativeAICalledCalloutLlmResponse; + /** n array of objects containing the search results. */ + request?: SearchResults[]; + } + + /** + * + */ + export interface TurnEventGenerativeAICalledCalloutLlmResponse { + /** The LLM response that is returned. */ + text?: string; + /** The type of response that is returned. */ + response_type?: string; + /** Whether the response is an idk response. */ + is_idk_response?: boolean; + } + + /** + * TurnEventGenerativeAICalledCalloutRequest. + */ + export interface TurnEventGenerativeAICalledCalloutRequest { + /** The REST method of the request. */ + method?: TurnEventGenerativeAICalledCalloutRequest.Constants.Method | string; + /** The host URL of the request call. */ + url?: string; + /** The host port of the request call. */ + port?: string; + /** The URL path of the request call. */ + path?: string; + /** Any query parameters appended to the URL of the request call. */ + query_parameters?: string; + /** Any headers included in the request call. */ + headers?: JsonObject; + /** Contains the response of the external server or an object. In cases like timeouts or connections errors, it + * will contain details of why the callout to the external server failed. + */ + body?: JsonObject; + } + export namespace TurnEventGenerativeAICalledCalloutRequest { + export namespace Constants { + /** The REST method of the request. */ + export enum Method { + GET = 'GET', + POST = 'POST', + PUT = 'PUT', + DELETE = 'DELETE', + PATCH = 'PATCH', + } + } + } + + /** + * TurnEventGenerativeAICalledCalloutResponse. + */ + export interface TurnEventGenerativeAICalledCalloutResponse { + /** The final response string. This response is a composition of every partial chunk received from the stream. */ + body?: string; + /** The final status code of the response. */ + status_code?: number; + } + + /** + * TurnEventGenerativeAICalledCalloutSearch. + */ + export interface TurnEventGenerativeAICalledCalloutSearch { + /** The search engine that was used to scan the documents. */ + engine?: string; + /** The name of the Elasticsearch index being used. This field is only available if the engine being used is + * Elasticsearch. + */ + index?: string; + /** The query that will be used by the system to initiate search on the document search engine. */ + query?: string; + request?: TurnEventGenerativeAICalledCalloutRequest; + response?: TurnEventGenerativeAICalledCalloutResponse; + } + + /** + * TurnEventGenerativeAICalledMetrics. + */ + export interface TurnEventGenerativeAICalledMetrics { + /** The amount of time (in milliseconds) it took for the system to complete the search using the document search + * engine. + */ + search_time_ms?: number; + /** The amount of time (in milliseconds) it took for the system to complete answer generation process by + * reaching out to watsonx.ai. + */ + answer_generation_time_ms?: number; + /** The amount of time (in milliseconds) it took for the system to fully process the conversational search. */ + total_time_ms?: number; + } + + /** + * TurnEventNodeSource. + */ + export interface TurnEventNodeSource { + /** The type of turn event. */ + type?: TurnEventNodeSource.Constants.Type | string; + /** A dialog node that was visited during processing of the input message. */ + dialog_node?: string; + /** The title of the dialog node. */ + title?: string; + /** The condition that triggered the dialog node. */ + condition?: string; + } + export namespace TurnEventNodeSource { + export namespace Constants { + /** The type of turn event. */ + export enum Type { + DIALOG_NODE = 'dialog_node', + } + } + } + + /** + * TurnEventSearchError. + */ + export interface TurnEventSearchError { + /** Any error message returned by a failed call to a search skill. */ + message?: string; + } + + /** + * TurnEventStepSource. + */ + export interface TurnEventStepSource { + /** The type of turn event. */ + type?: TurnEventStepSource.Constants.Type | string; + /** An action that was visited during processing of the message. */ + action?: string; + /** The title of the action. */ + action_title?: string; + /** A step that was visited during processing of the message. */ + step?: string; + /** Whether the action that the turn event was generated from is an AI-guided action. */ + is_ai_guided?: boolean; + /** Whether the action that the turn event was generated from is a skill-guided action. */ + is_skill_based?: boolean; + } + export namespace TurnEventStepSource { + export namespace Constants { + /** The type of turn event. */ + export enum Type { + STEP = 'step', + } + } + } + + /** + * The search skill orchestration settings for the environment. + */ + export interface UpdateEnvironmentOrchestration { + /** Whether to fall back to a search skill when responding to messages that do not match any intent or action + * defined in dialog or action skills. (If no search skill is configured for the environment, this property is + * ignored.). + */ + search_skill_fallback?: boolean; + } + + /** + * An object describing the release that is currently deployed in the environment. + */ + export interface UpdateEnvironmentReleaseReference { + /** The name of the deployed release. */ + release?: string; + } + + /** + * CompleteItem. + */ + export interface CompleteItem extends RuntimeResponseGeneric { + streaming_metadata: Metadata; + } + + /** + * GenerativeAITaskContentGroundedAnswering. + */ + export interface GenerativeAITaskContentGroundedAnswering extends GenerativeAITask { + /** The type of generative ai task. */ + task?: string; + /** Whether response was an idk response. */ + is_idk_response?: boolean; + /** Whether response was a hap response. */ + is_hap_detected?: boolean; + /** The confidence scores for determining whether to show the generated response or an “I don't know” response. */ + confidence_scores?: GenerativeAITaskConfidenceScores; + /** The original response returned by the generative ai. */ + original_response?: string; + /** Generated from the input text after auto-correction. If this field is not present, the input text was used + * as the query to the generative ai. + */ + inferred_query?: string; + } + + /** + * GenerativeAITaskGeneralPurposeAnswering. + */ + export interface GenerativeAITaskGeneralPurposeAnswering extends GenerativeAITask { + /** The type of generative ai task. */ + task?: string; + /** Whether response was an idk response. */ + is_idk_response?: boolean; + /** Whether response was a hap response. */ + is_hap_detected?: boolean; + } + + /** + * An object that identifies the dialog element that generated the error message. + */ + export interface LogMessageSourceAction extends LogMessageSource { + /** A string that indicates the type of dialog element that generated the error message. */ + type: string; + /** The unique identifier of the action that generated the error message. */ + action: string; + } + + /** + * An object that identifies the dialog element that generated the error message. + */ + export interface LogMessageSourceDialogNode extends LogMessageSource { + /** A string that indicates the type of dialog element that generated the error message. */ + type: string; + /** The unique identifier of the dialog node that generated the error message. */ + dialog_node: string; + } + + /** + * An object that identifies the dialog element that generated the error message. + */ + export interface LogMessageSourceHandler extends LogMessageSource { + /** A string that indicates the type of dialog element that generated the error message. */ + type: string; + /** The unique identifier of the action that generated the error message. */ + action: string; + /** The unique identifier of the step that generated the error message. */ + step?: string; + /** The unique identifier of the handler that generated the error message. */ + handler: string; + } + + /** + * An object that identifies the dialog element that generated the error message. + */ + export interface LogMessageSourceStep extends LogMessageSource { + /** A string that indicates the type of dialog element that generated the error message. */ + type: string; + /** The unique identifier of the action that generated the error message. */ + action: string; + /** The unique identifier of the step that generated the error message. */ + step: string; + } + + /** + * MessageOutputDebugTurnEventTurnEventActionFinished. + */ + export interface MessageOutputDebugTurnEventTurnEventActionFinished extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The time when the action started processing the message. */ + action_start_time?: string; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventActionFinished.Constants.ConditionType | string; + /** The reason the action finished processing. */ + reason?: MessageOutputDebugTurnEventTurnEventActionFinished.Constants.Reason | string; + /** The state of all action variables at the time the action finished. */ + action_variables?: JsonObject; + } + export namespace MessageOutputDebugTurnEventTurnEventActionFinished { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + /** The reason the action finished processing. */ + export enum Reason { + ALL_STEPS_DONE = 'all_steps_done', + NO_STEPS_VISITED = 'no_steps_visited', + ENDED_BY_STEP = 'ended_by_step', + CONNECT_TO_AGENT = 'connect_to_agent', + MAX_RETRIES_REACHED = 'max_retries_reached', + FALLBACK = 'fallback', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventActionRoutingDenied. + */ + export interface MessageOutputDebugTurnEventTurnEventActionRoutingDenied extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventActionRoutingDenied.Constants.ConditionType | string; + /** The reason the action was visited. */ + reason?: MessageOutputDebugTurnEventTurnEventActionRoutingDenied.Constants.Reason | string; + } + export namespace MessageOutputDebugTurnEventTurnEventActionRoutingDenied { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + /** The reason the action was visited. */ + export enum Reason { + ACTION_CONDITIONS_FAILED = 'action_conditions_failed', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventActionVisited. + */ + export interface MessageOutputDebugTurnEventTurnEventActionVisited extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The time when the action started processing the message. */ + action_start_time?: string; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventActionVisited.Constants.ConditionType | string; + /** The reason the action was visited. */ + reason?: MessageOutputDebugTurnEventTurnEventActionVisited.Constants.Reason | string; + /** The variable where the result of the call to the action is stored. Included only if + * **reason**=`subaction_return`. + */ + result_variable?: string; + } + export namespace MessageOutputDebugTurnEventTurnEventActionVisited { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + /** The reason the action was visited. */ + export enum Reason { + INTENT = 'intent', + INVOKE_SUBACTION = 'invoke_subaction', + SUBACTION_RETURN = 'subaction_return', + INVOKE_EXTERNAL = 'invoke_external', + TOPIC_SWITCH = 'topic_switch', + TOPIC_RETURN = 'topic_return', + AGENT_REQUESTED = 'agent_requested', + STEP_VALIDATION_FAILED = 'step_validation_failed', + NO_ACTION_MATCHES = 'no_action_matches', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventCallout. + */ + export interface MessageOutputDebugTurnEventTurnEventCallout extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + callout?: TurnEventCalloutCallout; + error?: TurnEventCalloutError; + } + + /** + * MessageOutputDebugTurnEventTurnEventClientActions. + */ + export interface MessageOutputDebugTurnEventTurnEventClientActions extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventStepSource; + /** An array of client actions. */ + client_actions?: ClientAction[]; + } + + /** + * MessageOutputDebugTurnEventTurnEventConversationalSearchEnd. + */ + export interface MessageOutputDebugTurnEventTurnEventConversationalSearchEnd extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventConversationalSearchEnd.Constants.ConditionType | string; + } + export namespace MessageOutputDebugTurnEventTurnEventConversationalSearchEnd { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventGenerativeAICalled. + */ + export interface MessageOutputDebugTurnEventTurnEventGenerativeAICalled extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + /** For internal use only. */ + source?: JsonObject; + /** The time when generative ai started processing the message. */ + generative_ai_start_time?: string; + generative_ai?: GenerativeAITask; + callout?: TurnEventGenerativeAICalledCallout; + metrics?: TurnEventGenerativeAICalledMetrics; + } + + /** + * MessageOutputDebugTurnEventTurnEventHandlerVisited. + */ + export interface MessageOutputDebugTurnEventTurnEventHandlerVisited extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The time when the action started processing the message. */ + action_start_time?: string; + } + + /** + * MessageOutputDebugTurnEventTurnEventManualRoute. + */ + export interface MessageOutputDebugTurnEventTurnEventManualRoute extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventStepSource; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventManualRoute.Constants.ConditionType | string; + /** The time when the action started processing the message. */ + action_start_time?: string; + /** The name of the route. */ + route_name?: string; + } + export namespace MessageOutputDebugTurnEventTurnEventManualRoute { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventNodeVisited. + */ + export interface MessageOutputDebugTurnEventTurnEventNodeVisited extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventNodeSource; + /** The reason the dialog node was visited. */ + reason?: MessageOutputDebugTurnEventTurnEventNodeVisited.Constants.Reason | string; + } + export namespace MessageOutputDebugTurnEventTurnEventNodeVisited { + export namespace Constants { + /** The reason the dialog node was visited. */ + export enum Reason { + WELCOME = 'welcome', + BRANCH_START = 'branch_start', + TOPIC_SWITCH = 'topic_switch', + TOPIC_RETURN = 'topic_return', + TOPIC_SWITCH_WITHOUT_RETURN = 'topic_switch_without_return', + JUMP = 'jump', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventSearch. + */ + export interface MessageOutputDebugTurnEventTurnEventSearch extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + error?: TurnEventSearchError; + } + + /** + * MessageOutputDebugTurnEventTurnEventStepAnswered. + */ + export interface MessageOutputDebugTurnEventTurnEventStepAnswered extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventStepAnswered.Constants.ConditionType | string; + /** The time when the action started processing the message. */ + action_start_time?: string; + /** Whether the step was answered in response to a prompt from the assistant. If this property is `false`, the + * user provided the answer without visiting the step. + */ + prompted?: boolean; + } + export namespace MessageOutputDebugTurnEventTurnEventStepAnswered { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventStepVisited. + */ + export interface MessageOutputDebugTurnEventTurnEventStepVisited extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventStepVisited.Constants.ConditionType | string; + /** The time when the action started processing the message. */ + action_start_time?: string; + /** Whether the step collects a customer response. */ + has_question?: boolean; + } + export namespace MessageOutputDebugTurnEventTurnEventStepVisited { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + } + } + + /** + * MessageOutputDebugTurnEventTurnEventSuggestionIntentsDenied. + */ + export interface MessageOutputDebugTurnEventTurnEventSuggestionIntentsDenied extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + /** An array of denied intents. */ + intents_denied?: RuntimeIntent[]; + } + + /** + * MessageOutputDebugTurnEventTurnEventTopicSwitchDenied. + */ + export interface MessageOutputDebugTurnEventTurnEventTopicSwitchDenied extends MessageOutputDebugTurnEvent { + /** The type of turn event. */ + event?: string; + source?: TurnEventActionSource; + /** The type of condition (if any) that is defined for the action. */ + condition_type?: MessageOutputDebugTurnEventTurnEventTopicSwitchDenied.Constants.ConditionType | string; + /** The reason the action was visited. */ + reason?: MessageOutputDebugTurnEventTurnEventTopicSwitchDenied.Constants.Reason | string; + } + export namespace MessageOutputDebugTurnEventTurnEventTopicSwitchDenied { + export namespace Constants { + /** The type of condition (if any) that is defined for the action. */ + export enum ConditionType { + USER_DEFINED = 'user_defined', + WELCOME = 'welcome', + ANYTHING_ELSE = 'anything_else', + } + /** The reason the action was visited. */ + export enum Reason { + ACTION_CONDITIONS_FAILED = 'action_conditions_failed', + } + } + } + + /** + * A completed response item. A complete item is a composition of every streamed partial item with the same + * streaming_metadata.id, and each complete item contains its own unique streaming_metadata.id. + */ + export interface MessageStreamResponseMessageStreamCompleteItem extends MessageStreamResponse { + complete_item?: CompleteItem; + } + + /** + * A chunk of the streamed message response. + */ + export interface MessageStreamResponseMessageStreamPartialItem extends MessageStreamResponse { + /** Message response partial item content. */ + partial_item?: PartialItem; + } + + /** + * The final and stateful message response. + */ + export interface MessageStreamResponseStatefulMessageStreamFinalResponse extends MessageStreamResponse { + /** Message final response content. */ + final_response?: FinalResponse; + } + + /** + * Non-private authentication settings for authorization-code flow. + */ + export interface ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2AuthorizationCode extends ProviderAuthenticationOAuth2Flows { + /** The token URL. */ + token_url?: string; + /** The refresh token URL. */ + refresh_url?: string; + /** The client authorization type. */ + client_auth_type?: ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2AuthorizationCode.Constants.ClientAuthType | string; + /** The content type. */ + content_type?: string; + /** The prefix fo the header. */ + header_prefix?: string; + /** The authorization URL. */ + authorization_url?: string; + /** The redirect URI. */ + redirect_uri?: string; + } + export namespace ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2AuthorizationCode { + export namespace Constants { + /** The client authorization type. */ + export enum ClientAuthType { + BODY = 'Body', + BASICAUTHHEADER = 'BasicAuthHeader', + } + } + } + + /** + * ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2ClientCredentials. + */ + export interface ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2ClientCredentials extends ProviderAuthenticationOAuth2Flows { + /** The token URL. */ + token_url?: string; + /** The refresh token URL. */ + refresh_url?: string; + /** The client authorization type. */ + client_auth_type?: ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2ClientCredentials.Constants.ClientAuthType | string; + /** The content type. */ + content_type?: string; + /** The prefix fo the header. */ + header_prefix?: string; + } + export namespace ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2ClientCredentials { + export namespace Constants { + /** The client authorization type. */ + export enum ClientAuthType { + BODY = 'Body', + BASICAUTHHEADER = 'BasicAuthHeader', + } + } + } + + /** + * Non-private authentication settings for resource owner password flow. + */ + export interface ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2Password extends ProviderAuthenticationOAuth2Flows { + /** The token URL. */ + token_url?: string; + /** The refresh token URL. */ + refresh_url?: string; + /** The client authorization type. */ + client_auth_type?: ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2Password.Constants.ClientAuthType | string; + /** The content type. */ + content_type?: string; + /** The prefix fo the header. */ + header_prefix?: string; + /** The username for oauth2 authentication when the preferred flow is "password". */ + username?: ProviderAuthenticationOAuth2PasswordUsername; + } + export namespace ProviderAuthenticationOAuth2FlowsProviderAuthenticationOAuth2Password { + export namespace Constants { + /** The client authorization type. */ + export enum ClientAuthType { + BODY = 'Body', + BASICAUTHHEADER = 'BasicAuthHeader', + } + } + } + + /** + * The private data for basic authentication. + */ + export interface ProviderPrivateAuthenticationBasicFlow extends ProviderPrivateAuthentication { + /** The password for bearer authentication. */ + password?: ProviderAuthenticationTypeAndValue; + } + + /** + * The private data for bearer authentication. + */ + export interface ProviderPrivateAuthenticationBearerFlow extends ProviderPrivateAuthentication { + /** The token for bearer authentication. */ + token?: ProviderAuthenticationTypeAndValue; + } + + /** + * The private data for oauth2 authentication. + */ + export interface ProviderPrivateAuthenticationOAuth2Flow extends ProviderPrivateAuthentication { + /** Scenarios performed by the API client to fetch an access token from the authorization server. */ + flows?: ProviderPrivateAuthenticationOAuth2FlowFlows; + } + + /** + * Private authentication settings for client credentials flow. + */ + export interface ProviderPrivateAuthenticationOAuth2FlowFlowsProviderPrivateAuthenticationOAuth2AuthorizationCode extends ProviderPrivateAuthenticationOAuth2FlowFlows { + /** The client ID. */ + client_id?: string; + /** The client secret. */ + client_secret?: string; + /** The access token. */ + access_token?: string; + /** The refresh token. */ + refresh_token?: string; + /** The authorization code. */ + authorization_code?: string; + } + + /** + * ProviderPrivateAuthenticationOAuth2FlowFlowsProviderPrivateAuthenticationOAuth2ClientCredentials. + */ + export interface ProviderPrivateAuthenticationOAuth2FlowFlowsProviderPrivateAuthenticationOAuth2ClientCredentials extends ProviderPrivateAuthenticationOAuth2FlowFlows { + /** The client ID. */ + client_id?: string; + /** The client secret. */ + client_secret?: string; + /** The access token. */ + access_token?: string; + /** The refresh token. */ + refresh_token?: string; + } + + /** + * Private authentication settings for resource owner password flow. + */ + export interface ProviderPrivateAuthenticationOAuth2FlowFlowsProviderPrivateAuthenticationOAuth2Password extends ProviderPrivateAuthenticationOAuth2FlowFlows { + /** The client ID. */ + client_id?: string; + /** The client secret. */ + client_secret?: string; + /** The access token. */ + access_token?: string; + /** The refresh token. */ + refresh_token?: string; + /** The password for oauth2 authentication when the preferred flow is "password". */ + password?: ProviderPrivateAuthenticationOAuth2PasswordPassword; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeAudio. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeAudio extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the audio clip. */ + source: string; + /** The title or introductory text to show before the response. */ + title?: string; + /** The description to show with the the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** For internal use only. */ + channel_options?: JsonObject; + /** Descriptive text that can be used for screen readers or other situations where the audio player cannot be + * seen. + */ + alt_text?: string; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeChannelTransfer. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeChannelTransfer extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + * + * **Note:** The `channel_transfer` response type is not supported on IBM Cloud Pak for Data. + */ + response_type: string; + /** The message to display to the user when initiating a channel transfer. */ + message_to_user: string; + /** Information used by an integration to transfer the conversation to a different channel. */ + transfer_info: ChannelTransferInfo; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeConnectToAgent. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeConnectToAgent extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** A message to be sent to the human agent who will be taking over the conversation. */ + message_to_human_agent?: string; + /** An optional message to be displayed to the user to indicate that the conversation will be transferred to the + * next available agent. + */ + agent_available?: AgentAvailabilityMessage; + /** An optional message to be displayed to the user to indicate that no online agent is available to take over + * the conversation. + */ + agent_unavailable?: AgentAvailabilityMessage; + /** Routing or other contextual information to be used by target service desk systems. */ + transfer_info?: DialogNodeOutputConnectToAgentTransferInfo; + /** A label identifying the topic of the conversation, derived from the **title** property of the relevant node + * or the **topic** property of the dialog node response. + */ + topic?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeConversationalSearch. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeConversationalSearch extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The text of the conversational search response. */ + text: string; + /** The title of the citations. The default is “How do we know?”. It can be updated in the conversational search + * user interface. + */ + citations_title: string; + /** The citations for the generated response. */ + citations: ResponseGenericCitation[]; + /** The confidence scores for determining whether to show the generated response or an “I don't know” response. */ + confidence_scores: ResponseGenericConfidenceScores; + /** The response length option. It is used to control the length of the generated response. It is configured + * either in the user interface or through the Update skill API. For more information, see [watsonx Assistant + * documentation]( + * https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-conversational-search#tuning-the-generated-response-length-in-conversational-search). + */ + response_length_option: string; + /** An array of objects containing the search results. */ + search_results: SearchResults[]; + /** A disclaimer for the conversational search response. */ + disclaimer: string; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeDate. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeDate extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeDtmf. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeDtmf extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + command_info?: DtmfCommandInfo; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeEndSession. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeEndSession extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** For internal use only. */ + channel_options?: JsonObject; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeIframe. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeIframe extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the embeddable content. */ + source: string; + /** The title or introductory text to show before the response. */ + title?: string; + /** The description to show with the the response. */ + description?: string; + /** The URL of an image that shows a preview of the embedded content. */ + image_url?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeImage. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeImage extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the image. */ + source: string; + /** The title to show before the response. */ + title?: string; + /** The description to show with the the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** Descriptive text that can be used for screen readers or other situations where the image cannot be seen. */ + alt_text?: string; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeOption. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeOption extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The title or introductory text to show before the response. */ + title: string; + /** The description to show with the the response. */ + description?: string; + /** The preferred type of control to display. */ + preference?: RuntimeResponseGenericRuntimeResponseTypeOption.Constants.Preference | string; + /** An array of objects describing the options from which the user can choose. */ + options: DialogNodeOutputOptionsElement[]; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + export namespace RuntimeResponseGenericRuntimeResponseTypeOption { + export namespace Constants { + /** The preferred type of control to display. */ + export enum Preference { + DROPDOWN = 'dropdown', + BUTTON = 'button', + } + } + } + + /** + * RuntimeResponseGenericRuntimeResponseTypePause. + */ + export interface RuntimeResponseGenericRuntimeResponseTypePause extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** How long to pause, in milliseconds. */ + time: number; + /** Whether to send a "user is typing" event during the pause. */ + typing?: boolean; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeSearch. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeSearch extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The title or introductory text to show before the response. This text is defined in the search skill + * configuration. + */ + header: string; + /** An array of objects that contains the search results to be displayed in the initial response to the user. */ + primary_results: SearchResult[]; + /** An array of objects that contains additional search results that can be displayed to the user upon request. */ + additional_results: SearchResult[]; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeSuggestion. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeSuggestion extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The title or introductory text to show before the response. */ + title: string; + /** An array of objects describing the possible matching dialog nodes from which the user can choose. */ + suggestions: DialogSuggestion[]; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeText. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeText extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The text of the response. */ + text: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeUserDefined. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeUserDefined extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** An object containing any properties for the user-defined response type. */ + user_defined: JsonObject; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + } + + /** + * RuntimeResponseGenericRuntimeResponseTypeVideo. + */ + export interface RuntimeResponseGenericRuntimeResponseTypeVideo extends RuntimeResponseGeneric { + /** The type of response returned by the dialog node. The specified response type must be supported by the + * client application or channel. + */ + response_type: string; + /** The `https:` URL of the video. */ + source: string; + /** The title or introductory text to show before the response. */ + title?: string; + /** The description to show with the the response. */ + description?: string; + /** An array of objects specifying channels for which the response is intended. If **channels** is present, the + * response is intended for a built-in integration and should not be handled by an API client. + */ + channels?: ResponseGenericChannel[]; + /** For internal use only. */ + channel_options?: JsonObject; + /** Descriptive text that can be used for screen readers or other situations where the video cannot be seen. */ + alt_text?: string; + } + + /** + * A completed response item. A complete item is a composition of every streamed partial item with the same + * streaming_metadata.id, and each complete item contains its own unique streaming_metadata.id. + */ + export interface StatelessMessageStreamResponseMessageStreamCompleteItem extends StatelessMessageStreamResponse { + complete_item?: CompleteItem; + } + + /** + * A chunk of the streamed message response. + */ + export interface StatelessMessageStreamResponseMessageStreamPartialItem extends StatelessMessageStreamResponse { + /** Message response partial item content. */ + partial_item?: PartialItem; + } + + /** + * The final and stateless message response. + */ + export interface StatelessMessageStreamResponseStatelessMessageStreamFinalResponse extends StatelessMessageStreamResponse { + /** Message final response content. */ + final_response?: StatelessFinalResponse; + } +} + +export = AssistantV2; diff --git a/auth.js.enc b/auth.js.enc deleted file mode 100644 index 88fc174726..0000000000 Binary files a/auth.js.enc and /dev/null differ diff --git a/auth/index.ts b/auth/index.ts new file mode 100644 index 0000000000..ee12e2bf09 --- /dev/null +++ b/auth/index.ts @@ -0,0 +1,27 @@ +/** + * (C) Copyright IBM Corp. 2019. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { + NoAuthAuthenticator, + BasicAuthenticator, + BearerTokenAuthenticator, + IamAuthenticator, + CloudPakForDataAuthenticator, + IamTokenManager, + Cp4dTokenManager, + McspAuthenticator, + getAuthenticatorFromEnvironment, +} from 'ibm-cloud-sdk-core'; diff --git a/authorization/v1.js b/authorization/v1.js deleted file mode 100644 index 56bd91320f..0000000000 --- a/authorization/v1.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const url = require('url'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * Authorization Service - * - * Generates temporary auth tokens for use in untrusted environments. - * Tokens expire after one hour. - * - * @param {Object} options - * @param {String} options.username - * @param {String} options.password - * @param {String} [options.url] url of the service for which auth tokens are being generated - * @constructor - */ -function AuthorizationV1(options) { - BaseService.call(this, options); - this.target_url = options.url; - // replace the url to always point to /authorization/api - const hostname = url.parse(this._options.url); - hostname.pathname = '/authorization/api'; - this._options.url = url.format(hostname); -} -util.inherits(AuthorizationV1, BaseService); -AuthorizationV1.prototype.name = 'authorization'; -AuthorizationV1.prototype.version = 'v1'; -AuthorizationV1.URL = 'https://stream.watsonplatform.net/authorization/api'; - -/** - * Get a percent-encoded authorization token based on resource query string param - * - * @param {Object} [options] - * @param {String} [options.url] defaults to url supplied to constructor (if any) - * @param {Function(err, token)} callback - called with a %-encoded token - */ -AuthorizationV1.prototype.getToken = function(params, callback) { - if (typeof params === 'function') { - callback = params; - params = { url: this.target_url }; - } - if (!params.url) { - callback(new Error('Missing required parameters: url')); - return; - } - - const parameters = { - options: { - method: 'GET', - url: '/v1/token?url=' + params.url - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -module.exports = AuthorizationV1; diff --git a/conversation/v1-experimental.js b/conversation/v1-experimental.js deleted file mode 100644 index f41d19cf62..0000000000 --- a/conversation/v1-experimental.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const pick = require('object.pick'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {Object} options - * @constructor - */ -function ConversationV1Experimental(options) { - BaseService.call(this, options); - - if (!this._options.silent) { - // eslint-disable-next-line no-console - console.warn( - new Error('Watson Conversation v1-experimental is sunset as of 2016-08-01. Please upgrade to v1. Set {silent: true} to disable this message.').stack - ); - } - - // Check if 'version_date' was provided - if (typeof this._options.version_date === 'undefined') { - throw new Error('Argument error: version_date was not specified, use 2016-05-19'); - } - this._options.qs.version = options.version_date; -} -util.inherits(ConversationV1Experimental, BaseService); -ConversationV1Experimental.prototype.name = 'conversation'; -ConversationV1Experimental.prototype.version = 'v1-experimental'; -ConversationV1Experimental.URL = 'https://gateway.watsonplatform.net/conversation-experimental/api'; - -/** - * Returns a response to a user utterance. - * @param {Object} params { workspace_id: '', } - */ -ConversationV1Experimental.prototype.message = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/message', - method: 'POST', - json: true, - body: pick(params, ['input', 'context']), - path: pick(params, ['workspace_id']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -module.exports = ConversationV1Experimental; diff --git a/conversation/v1.js b/conversation/v1.js deleted file mode 100644 index f2c64fb1c1..0000000000 --- a/conversation/v1.js +++ /dev/null @@ -1,1725 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const pick = require('object.pick'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {Object} options - * @param {Object} options.version_date - * @constructor - */ -function ConversationV1(options) { - BaseService.call(this, options); - - // Check if 'version_date' was provided - if (typeof this._options.version_date === 'undefined') { - throw new Error('Argument error: version_date was not specified, use ConversationV1.VERSION_DATE_2017_05_26'); - } - this._options.qs.version = options.version_date; -} -util.inherits(ConversationV1, BaseService); -ConversationV1.prototype.name = 'conversation'; -ConversationV1.prototype.version = 'v1'; -ConversationV1.URL = 'https://gateway.watsonplatform.net/conversation/api'; - -/** - * Initial release - * @type {string} - */ -ConversationV1.VERSION_DATE_2016_07_11 = '2016-07-11'; - -/** - * 9/20 update made changes to response format - * - * * context.system.dialog_stack changed from an array of strings to an array of objects - * - * Old: -```json - "context": { - "system": { - "dialog_stack": [ - "root" - ], -``` - * New: -```json - "context": { - "system": { - "dialog_stack": [ - { - "dialog_node": "root" - } - ], -``` - * - * @see https://console.bluemix.net/docs/services/conversation/release-notes.html#20September2016 - * @type {string} - */ -ConversationV1.VERSION_DATE_2016_09_20 = '2016-09-20'; - -/** - * 02/03 Update - * - * * Absolute scoring has now been enabled. - * @see https://console.bluemix.net/docs/services/conversation/intents.html#absolute-scoring - * - * Old: - ```json - "intents": [ - { "intent" : "turn_off", "confidence" : 0.54 }, - { "intent" : "locate_amenity", "confidence" : 0.4}, - { "intent" : "weather", "confidence" : 0.06} - ] -``` - * Previously all intent confidence values summed to 1.0. - * New: -```json - "intents": [ - { "intent" : "turn_off", "confidence" : 0.54 }, - { "intent" : "locate_amenity", "confidence" : 0.52}, - { "intent" : "weather", "confidence" : 0.01} - ] -``` - * Now each intent is scored individually with a maximum confidence value of 1. - * - * * Irrelevant input detection. - * Previously an intent was always returned regardless of whether the system considered it irrelevant to the - * training data within the workspace. With Irrelevant input detection the system will now return an empty intent - * array if the system thinks the input is irrelevant to the workspace content. - * Old: - ```json - "input" : { "text" : "what color is the sky?"}, - "intents": [ - { "intent" : "weather", "confidence" : 0.36 }, - { "intent" : "turn_off", "confidence" : 0.33}, - { "intent" : "locate_amenity", "confidence" : 0.31} - ] - ``` - * New: - ```json - "input" : { "text" : "what color is the sky?"}, - "intents": [] - ``` - * - * @see https://console.bluemix.net/docs/services/conversation/release-notes.html#3February2017 - * @type {string} - */ -ConversationV1.VERSION_DATE_2017_02_03 = '2017-02-03'; - -/** - * Adds support entities (with values and synonyms) and accessing logs - * - * @see https://www.ibm.com/watson/developercloud/doc/conversation/release-notes.html#18-april-2017 - * @type {string} - */ -ConversationV1.VERSION_DATE_2017_04_21 = '2017-04-21'; - -/** - * Schema changes for error response objects and workspace exporting - * - * @see https://console.bluemix.net/docs/services/conversation/release-notes.html#release-notes - * @type {string} - */ -ConversationV1.VERSION_DATE_2017_05_26 = '2017-05-26'; - -/** - * Method: message - * - * Returns a response to a user utterance. - * - * Example response for 2017-02-03 version_date: -```json - { - "intents": [ - { - "intent": "turn_on", - "confidence": 0.999103316650195 - } - ], - "entities": [ - { - "entity": "appliance", - "location": [ - 12, - 18 - ], - "value": "light" - } - ], - "input": { - "text": "Turn on the lights" - }, - "output": { - "log_messages": [], - "text": [ - "Hi. It looks like a nice drive today. What would you like me to do?" - ], - "nodes_visited": [ - "node_1_1467221909631" - ] - }, - "context": { - "conversation_id": "820334ac-ee79-45b5-aa03-7958dcd0fd34", - "system": { - "dialog_stack": [ - { - "dialog_node": "root" - } - ], - "dialog_turn_counter": 1, - "dialog_request_counter": 1 - } - } - } -``` - * - * - * - * @param {Object} params - * @param params.workspace_id - * @param [params.input] - * @param [params.context] - * @param [params.alternate_intents=false] - includes other lower-confidence intents in the intents array. - * @param [params.output] - * @param [params.entities] - * @param [params.intents] - * - */ -ConversationV1.prototype.message = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/message', - method: 'POST', - json: true, - body: pick(params, ['input', 'context', 'alternate_intents', 'output', 'entities', 'intents']), - path: pick(params, ['workspace_id']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: listWorkspaces - * - * Returns the list of workspaces in Watson Conversation Service instance - * - * Example Response: -```json - { - "workspaces": [ - { - "name": "Pizza app", - "created": "2015-12-06T23:53:59.153Z", - "language": "en", - "metadata": {}, - "updated": "2015-12-06T23:53:59.153Z", - "description": "Pizza app", - "workspace_id": "pizza_app-e0f3" - } - ] - } -``` - * - * @param {Object} [params] - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - */ -ConversationV1.prototype.listWorkspaces = function(params, callback) { - if (typeof params === 'function' && !callback) { - callback = params; - params = null; - } - const parameters = { - options: { - url: '/v1/workspaces', - method: 'GET', - qs: pick(params, ['page_limit', 'include_count', 'sort', 'cursor']) - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createWorkspace - * - * Creates a new workspace - * - * Model Schema -```json - { - "name": "string", - "description": "string", - "language": "string", - "metadata": {}, - "counterexamples": [ - { - "text": "string" - } - ], - "dialog_nodes": [ - { - "dialog_node": "string", - "description": "string", - "conditions": "string", - "parent": "string", - "previous_sibling": "string", - "output": { - "text": "string" - }, - "context": {}, - "metadata": {}, - "go_to": { - "dialog_node": "string", - "selector": "string", - "return": true - } - } - ], - "entities": [ - { - "entity": "string", - "description": { - "long": [ - "string" - ], - "short": [ - "string" - ], - "examples": [ - "string" - ] - }, - "type": "string", - "source": "string", - "open_list": false, - "values": [ - { - "value": "string", - "metadata": {}, - "synonyms": [ - "string" - ] - } - ] - } - ], - "intents": [ - { - "intent": "string", - "description": "string", - "examples": [ - { - "text": "string" - } - ] - } - ] - } -``` - * - * Example Response -```json - { - "name": "Pizza app", - "created": "2015-12-06T23:53:59.153Z", - "language": "en", - "metadata": {}, - "updated": "2015-12-06T23:53:59.153Z", - "description": "Pizza app", - "workspace_id": "pizza_app-e0f3" - } -``` - * - * @param {Object} params - * @param {String} [params.name] - * @param {String} [params.description] - * @param {String} [params.language] - * @param {Object} [params.metadata] - * @param {Array} [params.entities] - * @param {Array} [params.intents] - * @param {Array} [params.dialog_nodes] - * @param {Array} [params.counterexamples] - * @param {Function} [callback] - * - */ - -ConversationV1.prototype.createWorkspace = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces', - method: 'POST', - json: true, - body: pick(params, ['name', 'language', 'entities', 'intents', 'dialog_nodes', 'metadata', 'description', 'counterexamples']) - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getWorkspace - * - * Returns information about a specified workspace or return the whole workspace - * - * Example Response (with default export value): -```json - { - "name": "Pizza app", - "created": "2015-12-06T23:53:59.153Z", - "language": "en", - "metadata": {}, - "updated": "2015-12-06T23:53:59.153Z", - "description": "Pizza app", - "workspace_id": "pizza_app-e0f3" - } -``` - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Function} [callback] - */ - -ConversationV1.prototype.getWorkspace = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}', - method: 'GET', - json: true, - qs: pick(params, ['export']), - path: pick(params, ['workspace_id']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteWorkspace - * - * Deletes the specified workspace - * - * - * @param {Object} params { workspace_id: '' } - * @param params.workspace_id - * @param {Function} [callback] - */ - -ConversationV1.prototype.deleteWorkspace = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateWorkspace - * - * Updates a workspace - * - * Example value -```json - { - "name": "Pizza app", - "created": "2015-12-06T23:53:59.153Z", - "language": "en", - "metadata": {}, - "description": "Pizza app", - "workspace_id": "pizza_app-e0f3", - "counterexamples": [ - { - "text": "string" - } - ], - "dialog_nodes": [ - { - "dialog_node": "string", - "description": "string", - "conditions": "string", - "parent": "string", - "previous_sibling": "string", - "output": { - "text": "string" - }, - "context": {}, - "metadata": {}, - "go_to": { - "dialog_node": "string", - "selector": "string", - "return": true - } - } - ], - "entities": [ - { - "entity": "string", - "description": { - "long": [ - "string" - ], - "short": [ - "string" - ], - "examples": [ - "string" - ] - }, - "type": "string", - "source": "string", - "open_list": false, - "values": [ - { - "value": "string", - "metadata": {}, - "synonyms": [ - "string" - ] - } - ] - } - ], - "intents": [ - { - "intent": "string", - "description": "string", - "examples": [ - { - "text": "string" - } - ] - } - ] - } -``` - * - * Example Response: -```json - { - "name": "Pizza app", - "created": "2015-12-06T23:53:59.153Z", - "language": "en", - "metadata": {}, - "updated": "2015-12-06T23:53:59.153Z", - "description": "Pizza app", - "workspace_id": "pizza_app-e0f3" - } -``` - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} [params.name] - * @param {String} [params.description] - * @param {String} [params.language] - * @param {Object} [params.metadata] - * @param {Array} [params.entities] - * @param {Array} [params.intents] - * @param {Array} [params.dialog_nodes] - * @param {Array} [params.counterexamples] - * @param {Function} [callback] - * - */ - -ConversationV1.prototype.updateWorkspace = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}', - method: 'POST', - json: true, - body: pick(params, ['name', 'language', 'entities', 'intents', 'dialog_nodes', 'metadata', 'description', 'counterexamples']), - path: pick(params, ['workspace_id']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: workspaceStatus - * - * Returns the training status of the specified workspace - * - * Example Response: -```json - { - "workspace_id": "pizza_app-e0f3", - "training": "true" - } -``` - * - * @param {Object} params - * @param params.workspace_id - * @param {Function} [callback] - * - */ - -ConversationV1.prototype.workspaceStatus = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/status', - method: 'GET', - json: true, - path: pick(params, ['workspace_id']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createIntent - * - * Create a new intent - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} [params.intent] - * @param {String} [params.description] - * @param {Array} [params.examples] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.createIntent = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents', - method: 'POST', - json: true, - path: pick(params, ['workspace_id']), - body: pick(params, ['intent', 'description', 'examples']) - }, - requiredParams: ['workspace_id', 'intent'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getIntents - * - * List the intents for a workspace. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getIntents = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents', - method: 'GET', - json: true, - path: pick(params, ['workspace_id']), - qs: pick(params, ['export', 'page_limit', 'include_count', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getIntent - * - * Get information about an intent, optionally including all intent content. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.intent - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getIntent = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{intent}', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'intent']), - qs: pick(params, ['export']) - }, - requiredParams: ['workspace_id', 'intent'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateIntent - * - * Update an existing intent with new or modified data. You must provide JSON data defining the content of the updated intent. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.old_intent - * @param {String} params.intent - * @param {String} params.description - * @param {Array} params.examples - * @param {Function} [callback] - * - */ -ConversationV1.prototype.updateIntent = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{old_intent}', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'old_intent']), - body: pick(params, ['intent', 'description', 'examples']) - }, - requiredParams: ['workspace_id', 'old_intent', 'intent'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteIntent - * - * Delete an intent from a workspace - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.intent - * @param {Function} [callback] - * - */ -ConversationV1.prototype.deleteIntent = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{intent}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id', 'intent']) - }, - requiredParams: ['workspace_id', 'intent'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getExamples - * - * List the user input examples for an intent. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.intent - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getExamples = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'intent']), - qs: pick(params, ['page_limit', 'include_count', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id', 'intent'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createExample - * - * Add a new user input example to an intent. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.intent - * @param {String} params.text - * @param {Function} [callback] - * - */ -ConversationV1.prototype.createExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'intent']), - body: pick(params, ['text']) - }, - requiredParams: ['workspace_id', 'intent'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteExample - * - * Delete a user input example from an intent. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.intent - * @param {String} params.text - * @param {Function} [callback] - * - */ -ConversationV1.prototype.deleteExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples/{text}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id', 'intent', 'text']) - }, - requiredParams: ['workspace_id', 'intent', 'text'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getExample - * - * Get information about a user input example. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.intent - * @param {String} params.text - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples/{text}', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'intent', 'text']) - }, - requiredParams: ['workspace_id', 'intent', 'text'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateExample - * - * Update the text of a user input example. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.intent - * @param {String} params.text - * @param {Object} params.example - * @param {Function} [callback] - * - */ -ConversationV1.prototype.updateExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/intents/{intent}/examples/{old_text}', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'intent', 'old_text']), - body: pick(params, ['text']) - }, - requiredParams: ['workspace_id', 'intent', 'old_text', 'text'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getCounterExamples - * - * List the counterexamples for a workspace. Counterexamples are examples that have been marked as irrelevant input - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getCounterExamples = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/counterexamples', - method: 'GET', - json: true, - path: pick(params, ['workspace_id']), - qs: pick(params, ['page_limit', 'include_count', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createCounterExample - * - * Add a new counterexample to a workspace. Counterexamples are examples that have been marked as irrelevant input. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.text The text of a user input example. - * @param {Function} [callback] - * - */ -ConversationV1.prototype.createCounterExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/counterexamples', - method: 'POST', - json: true, - path: pick(params, ['workspace_id']), - body: pick(params, ['text']) - }, - requiredParams: ['workspace_id', 'text'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteCounterExample - * - * Delete a counterexample from a workspace. Counterexamples are examples that have been marked as irrelevant input. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.text The text of a user input example. - * @param {Function} [callback] - * - */ -ConversationV1.prototype.deleteCounterExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/counterexamples/{text}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id', 'text']) - }, - requiredParams: ['workspace_id', 'text'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getCounterExample - * - * Get information about a counterexample. Counterexamples are examples that have been marked as irrelevant input. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.text The text of a user input example. - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getCounterExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/counterexamples/{text}', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'text']) - }, - requiredParams: ['workspace_id', 'text'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateCounterExample - * - * Get information about a counterexample. Counterexamples are examples that have been marked as irrelevant input. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.old_text - * @param {String} params.text The text of a user input example. - * @param {Function} [callback] - * - */ -ConversationV1.prototype.updateCounterExample = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/counterexamples/{old_text}', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'old_text']), - body: pick(params, ['text']) - }, - requiredParams: ['workspace_id', 'old_text', 'text'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createEntity - * - * Create a new entity - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} [params.entity] - * @param {String} [params.description] - * @param {Object} [params.metadata] - * @param {Boolean} [params.fuzzy_match=false] - whether to use fuzzy matching for the entity. - * @param {Array} [params.values] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.createEntity = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities', - method: 'POST', - json: true, - path: pick(params, ['workspace_id']), - body: pick(params, ['entity', 'description', 'metadata', 'values', 'fuzzy_match']) - }, - requiredParams: ['workspace_id', 'entity'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getEntities - * - * List the entities for a workspace. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getEntities = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities', - method: 'GET', - json: true, - path: pick(params, ['workspace_id']), - qs: pick(params, ['export', 'page_limit', 'include_count', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getEntity - * - * Get information about an entity, optionally including all entity content. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getEntity = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'entity']), - qs: pick(params, ['export']) - }, - requiredParams: ['workspace_id', 'entity'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateEntity - * - * Update an existing entity with new or modified data. You must provide JSON data defining the content of the updated entity. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.old_entity - * @param {String} params.entity - * @param {String} params.description - * @param {Object} params.metadata - * @param {Boolean} [params.fuzzy_match=false] - whether to use fuzzy matching for the entity. - * @param {Array} params.values - * @param {Function} [callback] - * - */ -ConversationV1.prototype.updateEntity = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{old_entity}', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'old_entity']), - body: pick(params, ['entity', 'description', 'metadata', 'values', 'fuzzy_match']) - }, - requiredParams: ['workspace_id', 'old_entity', 'entity'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteEntity - * - * Delete an entity from a workspace. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {Function} [callback] - * - */ -ConversationV1.prototype.deleteEntity = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id', 'entity']) - }, - requiredParams: ['workspace_id', 'entity'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createValue - * - * Add a new value to an entity. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} [params.entity] - * @param {String} [params.value] - * @param {Object} [params.metadata] - * @param {Array} [params.synonyms] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.createValue = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'entity']), - body: pick(params, ['value', 'metadata', 'synonyms']) - }, - requiredParams: ['workspace_id', 'entity', 'value'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getValues - * - * List the values for an entity. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getValues = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'entity']), - qs: pick(params, ['export', 'page_limit', 'include_count', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id', 'entity'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getValue - * - * Get information about an entity value. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {String} params.value - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getValue = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'entity', 'value']), - qs: pick(params, ['export']) - }, - requiredParams: ['workspace_id', 'entity', 'value'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateValue - * - * Update an existing entity value with new or modified data. You must provide JSON data defining the content of the updated entity value. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {String} params.old_value - * @param {String} params.value - * @param {Object} params.metadata - * @param {Array} params.synonyms - * @param {Function} [callback] - * - */ -ConversationV1.prototype.updateValue = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{old_value}', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'entity', 'old_value']), - body: pick(params, ['value', 'metadata', 'synonyms']) - }, - requiredParams: ['workspace_id', 'entity', 'old_value', 'value'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteValue - * - * Delete an entity from a workspace. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {String} params.value - * @param {Function} [callback] - * - */ -ConversationV1.prototype.deleteValue = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id', 'entity', 'value']) - }, - requiredParams: ['workspace_id', 'entity', 'value'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createSynonyms - * - * Add a new synonym to an entity value. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} [params.entity] - * @param {String} [params.value] - * @param {String} [params.synonym] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.createSynonym = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'entity', 'value']), - body: pick(params, ['synonym']) - }, - requiredParams: ['workspace_id', 'entity', 'value', 'synonym'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getSynonyms - * - * List the synonyms for an entity value. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {String} params.value - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getSynonyms = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'entity', 'value']), - qs: pick(params, ['export', 'page_limit', 'include_count', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id', 'entity', 'value'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getSynonym - * - * Get information about an entity value. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {String} params.value - * @param {String} params.synonym - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getSynonym = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms/{synonym}', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'entity', 'value', 'synonym']), - qs: pick(params, ['export']) - }, - requiredParams: ['workspace_id', 'entity', 'value', 'synonym'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateSynonym - * - * Update an existing entity value synonym with new text. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {String} params.value - * @param {String} params.old_synonym - * @param {String} params.synonym - * @param {Function} [callback] - * - */ -ConversationV1.prototype.updateSynonym = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms/{old_synonym}', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'entity', 'value', 'old_synonym']), - body: pick(params, ['synonym']) - }, - requiredParams: ['workspace_id', 'entity', 'value', 'old_synonym', 'synonym'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteSynonym - * - * Delete a synonym from an entity value. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.entity - * @param {String} params.value - * @param {String} params.synonym - * @param {Function} [callback] - * - */ -ConversationV1.prototype.deleteSynonym = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/entities/{entity}/values/{value}/synonyms/{synonym}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id', 'entity', 'value', 'synonym']) - }, - requiredParams: ['workspace_id', 'entity', 'value', 'synonym'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getLogs - * - * Returns information about requests (user input) received, and responses sent, by the workspace. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.filter - * @param {Number} [params.page_limit] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getLogs = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/logs', - method: 'GET', - json: true, - path: pick(params, ['workspace_id']), - qs: pick(params, ['filter', 'page_limit', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: createDialogNode - * - * Create a new dialog node - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} [params.dialog_node] - * @param {String} [params.description] - * @param {Array} [params.examples] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.createDialogNode = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/dialog_nodes', - method: 'POST', - json: true, - path: pick(params, ['workspace_id']), - body: pick(params, [ - 'dialog_node', - 'description', - 'conditions', - 'parent', - 'previous_sibling', - 'output', - 'context', - 'metadata', - 'next_step', - 'actions', - 'title', - 'type', - 'event_name', - 'variable' - ]) - }, - requiredParams: ['workspace_id', 'dialog_node'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getDialogNodes - * - * List the dialog nodes for a workspace. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Number} [params.page_limit] - * @param {Boolean} [params.include_count] - * @param {String} [params.sort] - * @param {String} [params.cursor] - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getDialogNodes = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/dialog_nodes', - method: 'GET', - json: true, - path: pick(params, ['workspace_id']), - qs: pick(params, ['page_limit', 'include_count', 'sort', 'cursor']) - }, - requiredParams: ['workspace_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: getDialogNode - * - * Get information about an dialog node, optionally including all dialog node content. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.dialog_node - * @param {Boolean} [params.export=false] - if true, the full contents of all of the sub-resources are returned - * @param {Function} [callback] - * - */ -ConversationV1.prototype.getDialogNode = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/dialog_nodes/{dialog_node}', - method: 'GET', - json: true, - path: pick(params, ['workspace_id', 'dialog_node']), - qs: pick(params, ['export']) - }, - requiredParams: ['workspace_id', 'dialog_node'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: updateDialogNode - * - * Update an existing dialog node with new or modified data. You must provide JSON data defining the content of the updated dialog node. - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.old_dialog_node - * @param {String} params.dialog_node - * @param {String} params.description - * @param {Array} params.examples - * @param {Function} [callback] - * - */ -ConversationV1.prototype.updateDialogNode = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/dialog_nodes/{old_dialog_node}', - method: 'POST', - json: true, - path: pick(params, ['workspace_id', 'old_dialog_node']), - body: pick(params, [ - 'dialog_node', - 'description', - 'conditions', - 'parent', - 'previous_sibling', - 'output', - 'context', - 'metadata', - 'next_step', - 'actions', - 'title', - 'type', - 'event_name', - 'variable' - ]) - }, - requiredParams: ['workspace_id', 'old_dialog_node', 'dialog_node'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Method: deleteDialogNode - * - * Delete an dialog node from a workspace - * - * @param {Object} params - * @param {String} params.workspace_id - * @param {String} params.dialog_node - * @param {Function} [callback] - * - */ -ConversationV1.prototype.deleteDialogNode = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/workspaces/{workspace_id}/dialog_nodes/{dialog_node}', - method: 'DELETE', - json: true, - path: pick(params, ['workspace_id', 'dialog_node']) - }, - requiredParams: ['workspace_id', 'dialog_node'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -module.exports = ConversationV1; diff --git a/dependency-lint.yml b/dependency-lint.yml deleted file mode 100644 index a96e6c7904..0000000000 --- a/dependency-lint.yml +++ /dev/null @@ -1,46 +0,0 @@ -# See https://github.com/charlierudolph/dependency-lint/blob/v4.2.0/docs/configuration.md -# for a detailed explanation of the options - -executedModules: - npmScripts: - dev: - - lint - - lint-depsnpm t - - test - - autofix - - doc - - codecov - - test-integration - - test-unit - - test-browser - - watch - - browserify - - watchify - - minify - - build - - compat-check - shellScripts: - dev: [] - ignore: [] - root: '' - -ignoreErrors: - shouldBeDependency: [] - shouldBeDevDependency: [] - unused: - - karma-* - - eslint-* - - shebang-loader # webpack - -requiredModules: - files: - dev: - - 'test/{unit,integration}/test.*.js' - ignore: - - 'node_modules/**/*' - - 'examples/**/*' - - 'dist/*' - - 'scripts/**/*' - root: '**/*.js' - stripLoaders: false - transpilers: [] diff --git a/dialog/v1.js b/dialog/v1.js deleted file mode 100644 index a487ebcf5e..0000000000 --- a/dialog/v1.js +++ /dev/null @@ -1,265 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const extend = require('extend'); -const requestFactory = require('../lib/requestwrapper'); -const pick = require('object.pick'); -const omit = require('object.omit'); -const isStream = require('isstream'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {Object} options - * @constructor - */ -function DialogV1(options) { - BaseService.call(this, options); - - if (!options.silent) { - // eslint-disable-next-line no-console - console.warn( - 'WARNING: The Dialog service was deprecated. Existing instances of the service stopped functioning on August 9, 2017. For information about the Conversation service that is replacing Dialog, see https://console.bluemix.net/docs/services/conversation/index.html#about. Set {silent: true} to disable this message.' - ); - } -} -util.inherits(DialogV1, BaseService); -DialogV1.prototype.name = 'dialog'; -DialogV1.prototype.version = 'v1'; -DialogV1.URL = 'https://gateway.watsonplatform.net/dialog/api'; - -/** - * Retrieves the values for profile variables for specific client ID - * @param {Object} params { client_id: '', dialog_id: '', name:''} - */ -DialogV1.prototype.getProfile = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}/profile', - method: 'GET', - json: true, - path: params, - qs: pick(params, ['client_id', 'name']) - }, - requiredParams: ['dialog_id', 'client_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Sets the values for profile variables - * @param {Object} params { client_id: '', dialog_id: '', name_values:''} - */ -DialogV1.prototype.updateProfile = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}/profile', - method: 'PUT', - json: true, - body: pick(params, ['name_values', 'client_id']), - path: params - }, - requiredParams: ['dialog_id', 'name_values'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Returns a chat session data dump for a given date. - * @param {Object} params { client_id: '', dialog_id: '', name_values:''} - */ -DialogV1.prototype.getConversation = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}/conversation', - method: 'GET', - json: true, - qs: omit(params, ['dialog_id']), - path: params - }, - requiredParams: ['dialog_id', 'date_from', 'date_to'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Returns a response for a submitted input message. - * Also used to start new conversations. - * @param {Object} params { client_id: '', dialog_id: '' } - */ -DialogV1.prototype.conversation = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}/conversation', - method: 'POST', - json: true, - form: omit(params, ['dialog_id']), - path: params - }, - requiredParams: ['dialog_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Updates content for specified nodes. - * @param {Object} params { dialog_id: '' } - */ -DialogV1.prototype.updateContent = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}/content', - method: 'PUT', - json: true, - path: params - }, - requiredParams: ['dialog_id'], - defaultOptions: extend(true, {}, this._options, pick(params, ['headers'])) - }; - return requestFactory(parameters, callback); -}; - -/** - * Gets content for nodes. - * @param {Object} params { dialog_id: '' } - */ -DialogV1.prototype.getContent = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}/content', - method: 'GET', - json: true, - path: params - }, - requiredParams: ['dialog_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Create a dialog based on a file and name - * @param {Object} params { name: '', file:'' } - */ -DialogV1.prototype.createDialog = function(params, callback) { - params = params || {}; - - if (!params.file) { - callback(new Error('Missing required parameters: file')); - return; - } - - if (!isStream(params.file)) { - callback(new Error('file is not a standard Node.js Stream')); - return; - } - - const parameters = { - options: { - url: '/v1/dialogs', - method: 'POST', - json: true, - formData: pick(params, ['name', 'file']) - }, - requiredParams: ['name'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Returns the dialogs associated with a service instance - */ -DialogV1.prototype.getDialogs = function(params, callback) { - const parameters = { - options: { - url: '/v1/dialogs', - method: 'GET', - json: true - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Delete a dialog and removes all associated data - */ -DialogV1.prototype.deleteDialog = function(params, callback) { - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}', - method: 'DELETE', - json: true, - path: params - }, - requiredParams: ['dialog_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Update a dialog with a new dialog file - * @param {Object} params { dialog_id: '' } - */ -DialogV1.prototype.updateDialog = function(params, callback) { - params = params || {}; - - if (!params.file) { - callback(new Error('Missing required parameters: file')); - return; - } - - if (!isStream(params.file)) { - callback(new Error('file is not a standard Node.js Stream')); - return; - } - - const parameters = { - options: { - url: '/v1/dialogs/{dialog_id}', - method: 'PUT', - json: true, - path: params, - formData: omit(params, ['dialog_id']) - }, - requiredParams: ['dialog_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -module.exports = DialogV1; diff --git a/discovery/v1-experimental.js b/discovery/v1-experimental.js deleted file mode 100644 index 34ecf1d4a6..0000000000 --- a/discovery/v1-experimental.js +++ /dev/null @@ -1,169 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const util = require('util'); -const requestFactory = require('../lib/requestwrapper'); -const BaseService = require('../lib/base_service'); -const pick = require('object.pick'); - -/** - * - * @param {Object} options - * @constructor - */ -function DiscoveryV1Experimental(options) { - BaseService.call(this, options); - - // Check if 'version_date' was provided - if (typeof this._options.version_date === 'undefined') { - throw new Error('Argument error: version_date was not specified, use DiscoveryV1Experimental.VERSION_DATE_2016_07_11'); - } - this._options.qs.version = options.version_date; -} - -util.inherits(DiscoveryV1Experimental, BaseService); -DiscoveryV1Experimental.prototype.name = 'discovery'; -DiscoveryV1Experimental.prototype.version = 'v1-experimental'; -DiscoveryV1Experimental.URL = 'https://gateway.watsonplatform.net/discovery-experimental/api'; - -/** - * Initial release - * @type {string} - */ -DiscoveryV1Experimental.VERSION_DATE_2016_07_11 = '2016-11-07'; - -/** - * Return the list of environments - * - * @param {Object} params - * @param {String} [params.name] search enviroments with the given name - */ -DiscoveryV1Experimental.prototype.getEnvironments = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments', - method: 'GET', - json: true, - qs: pick(params, ['name']) - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Get details about an environment - * - * @param {Object} params - * @param {String} params.environment_id - */ -DiscoveryV1Experimental.prototype.getEnvironment = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}', - method: 'GET', - path: pick(params, ['environment_id']), - json: true - }, - requiredParams: ['environment_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Return the list of collections in the given environment - * - * @param {Object} params - * @param {String} params.environment_id - * @param {String} [params.name] Find collections with the given name. - */ -DiscoveryV1Experimental.prototype.getCollections = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections', - method: 'GET', - path: pick(params, ['environment_id']), - json: true - }, - requiredParams: ['environment_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Get details about a collection - * - * @param {Object} params - * @param {String} params.environment_id - * @param {string} params.collection_id - */ -DiscoveryV1Experimental.prototype.getCollection = function(params, collectionId, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}', - method: 'GET', - path: pick(params, ['environment_id', 'collection_id']), - json: true - }, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Queries the collection - * - * @param {Object} params - * @param {String} params.environment_id - * @param {string} params.collection_id - * @param {String} [params.filter] A cacheable query that allows you to limit the information returned to exclude anything that isn't related to what you are searching. Filter searches are better for metadata type searches and when you are trying to get a sense of concepts in the dataset. - * @param {String} [params.query] A query search returns all possible results, even when it's not very relevant, with the most relevant documents listed first. Use a query search when you want to find the most relevant search results. Results are scored between 0 and 1, with 1 being an exact match and 0 being not a match at all. - * @param {String} [params.aggregation] An aggregation search uses combinations of filters and query search to return an exact answer. Aggregations are useful for building applications, because you can use them to build lists, tables, and time series. For a full list of possible aggregrations, see the Query reference. - * @param {Number} [params.count=10] Number of documents to return - * @param {String} [params.return] A comma separated list of the portion of the document hierarchy to return. - * @param {Number} [params.offset=0] For pagination purposes. Returns additional pages of results. Deep pagination is highly unperformant, and should be avoided. - */ -DiscoveryV1Experimental.prototype.query = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}/query', - method: 'GET', - json: true, - path: pick(params, ['environment_id', 'collection_id']), - qs: pick(params, ['filter', 'aggregation', 'return', 'count', 'offset', 'query']) - }, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -module.exports = DiscoveryV1Experimental; diff --git a/discovery/v1.js b/discovery/v1.js deleted file mode 100644 index c585ffb80e..0000000000 --- a/discovery/v1.js +++ /dev/null @@ -1,706 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const util = require('util'); -const requestFactory = require('../lib/requestwrapper'); -const BaseService = require('../lib/base_service'); -const pick = require('object.pick'); -const isStream = require('isstream'); - -/** - * - * @param {Object} options - * @constructor - */ -function DiscoveryV1(options) { - BaseService.call(this, options); - - // Check if 'version_date' was provided - if (typeof this._options.version_date === 'undefined') { - throw new Error('Argument error: version_date was not specified, use DiscoveryV1.VERSION_DATE_2017_08_01'); - } - this._options.qs.version = options.version_date; -} - -util.inherits(DiscoveryV1, BaseService); -DiscoveryV1.prototype.name = 'discovery'; -DiscoveryV1.prototype.version = 'v1'; -DiscoveryV1.URL = 'https://gateway.watsonplatform.net/discovery/api'; - -/** - * Initial release - * @type {string} - */ -DiscoveryV1.VERSION_DATE_2016_12_15 = '2016-12-15'; -/** - * Release exposing the `sort` parameter on the `/query` endpoint - * @type {string} - */ -DiscoveryV1.VERSION_DATE_2017_04_27 = '2017-04-27'; -/** - * Release migrating from Watson Discovery News Original to Watson Discovery News - * @type {string} - */ -DiscoveryV1.VERSION_DATE_2017_08_01 = '2017-08-01'; - -/** - * Return the list of environments - * - * @param {Object} params - */ -DiscoveryV1.prototype.getEnvironments = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments', - method: 'GET', - json: true - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Create a new environment - * @param {string} name - * @param {string} description - * @param {int} size (optional) - */ -DiscoveryV1.prototype.createEnvironment = function(params, callback) { - params = params || {}; - - // size is an int of 0,1,2,3, default 1 - if (typeof params.size === 'undefined' || params.size === null) { - params.size = 1; - } - - const parameters = { - options: { - url: '/v1/environments', - method: 'POST', - multipart: [ - { - 'content-type': 'application/json', - body: JSON.stringify(pick(params, ['name', 'description', 'size'])) - } - ], - json: true - }, - originalParams: params, - requiredParams: ['name', 'description'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Update an existing environment - * @param {string} environment_id(required) - * @param {string} name(required) - * @param {string} description(optional) - */ -DiscoveryV1.prototype.updateEnvironment = function(params, callback) { - params = params || {}; - const parameters = { - options: { - url: '/v1/environments/{environment_id}', - method: 'PUT', - path: pick(params, ['environment_id']), - multipart: [ - { - 'content-type': 'application/json', - body: JSON.stringify(pick(params, ['name', 'description'])) - } - ], - json: true - }, - originalParams: params, - requiredParams: ['environment_id', 'name'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Get details about an environment - * - * @param {Object} params - * @param {String} params.environment_id - */ -DiscoveryV1.prototype.getEnvironment = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}', - method: 'GET', - path: pick(params, ['environment_id']), - json: true - }, - requiredParams: ['environment_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Get details about an environment - * - * @param {Object} params - * @param {String} params.environment_id - */ -DiscoveryV1.prototype.deleteEnvironment = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}', - method: 'DELETE', - path: pick(params, ['environment_id']), - json: true - }, - requiredParams: ['environment_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Create a new configuration - * - * @param {String} params.environment_id - the ID of your environment - * @param {Object} params.file - Input a JSON object that enables you to customize how your content is ingested and what enrichments are added to your data. - */ -DiscoveryV1.prototype.createConfiguration = function(params, callback) { - params = params || {}; - const parameters = { - options: { - url: '/v1/environments/{environment_id}/configurations', - method: 'POST', - path: pick(params, ['environment_id']), - multipart: [ - { - 'content-type': 'application/json', - body: params.file - } - ], - json: true - }, - originalParams: params, - requiredParams: ['environment_id', 'file'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Update an existing configuration for a given environment - * - * @param {String} params.environment_id - the ID of your environment - * @param {String} params.configuration_id - the ID of your configuration - * @param {Object} params.file - Input a JSON object that enables you to update and customize how your data is ingested and what enrichments are added to your data. - */ - -DiscoveryV1.prototype.updateConfiguration = function(params, callback) { - params = params || {}; - const parameters = { - options: { - url: '/v1/environments/{environment_id}/configurations/{configuration_id}', - method: 'PUT', - path: pick(params, ['environment_id', 'configuration_id']), - multipart: [ - { - 'content-type': 'application/json', - body: params.file - } - ], - json: true - }, - originalParams: params, - requiredParams: ['environment_id', 'configuration_id', 'file'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * List all configurations - * - * @param {Object} params - * @param {String} params.environment_id - */ -DiscoveryV1.prototype.getConfigurations = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/configurations', - method: 'GET', - path: pick(params, ['environment_id']), - json: true - }, - requiredParams: ['environment_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Get details about a configuration - * - * @param {Object} params - * @param {String} params.environment_id - * @param {String} params.configuration_id - */ -DiscoveryV1.prototype.getConfiguration = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/configurations/{configuration_id}', - method: 'GET', - path: pick(params, ['environment_id', 'configuration_id']), - json: true - }, - requiredParams: ['environment_id', 'configuration_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Return the list of collections in the given environment - * - * @param {Object} params - * @param {String} params.environment_id - */ -DiscoveryV1.prototype.getCollections = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections', - method: 'GET', - path: pick(params, ['environment_id']), - json: true - }, - requiredParams: ['environment_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Get details about a collection - * - * @param {Object} params - * @param {String} params.environment_id - * @param {string} params.collection_id - */ -DiscoveryV1.prototype.getCollection = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}', - method: 'GET', - path: pick(params, ['environment_id', 'collection_id']), - json: true - }, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Create a new collection - * - * @param {Object} params - * @param {String} params.environment_id environment guid for the collection - * @param {string} params.name - * @param {string} params.description - * @param {string} params.configuration_id configuration to create the collection in - * @param {string} params.language_code currently, only `en_us` is supported - */ -DiscoveryV1.prototype.createCollection = function(params, callback) { - params = params || {}; - - params.language_code = params.language_code || 'en_us'; - params.language = params.language || params.language_code; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections', - method: 'POST', - path: pick(params, ['environment_id']), - multipart: [ - { - 'content-type': 'application/json', - body: JSON.stringify(pick(params, ['name', 'description', 'configuration_id', 'language'])) - } - ], - json: true - }, - originalParams: params, - requiredParams: ['environment_id', 'configuration_id', 'name'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Update an existing collection - * - * @param {Object} params - * @param {String} params.environment_id environment guid for the collection - * @param {String} params.collection_id collection id for the collection to be updated - * @param {string} params.collection_name - * @param {string} params.description - * @param {string} params.configuration_id configuration to create the collection in - * @param {string} params.language_code currently, only `en_us` is supported - */ -DiscoveryV1.prototype.updateCollection = function(params, callback) { - params = params || {}; - - params.language_code = params.language_code || 'en_us'; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}', - method: 'PUT', - path: pick(params, ['environment_id', 'collection_id']), - multipart: [ - { - 'content-type': 'application/json', - body: JSON.stringify(pick(params, ['collection_name', 'description', 'configuration_id', 'language_code'])) - } - ], - json: true - }, - originalParams: params, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Delete a collection - * - * @param {Object} params - * @param {String} params.environment_id environment guid for the collection - * @param {string} params.collection_id the guid of the collection to delete - */ -DiscoveryV1.prototype.deleteCollection = function(params, callback) { - params = params || {}; - - params.language_code = params.language_code || 'en_us'; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}', - method: 'DELETE', - path: pick(params, ['environment_id', 'collection_id']), - json: true - }, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Get list of unique fields associated with a collection - * - * @param {Object} params - * @param {String} params.environment_id in which the collection is located - * @param {string} params.collection_id for which fields are required - */ -DiscoveryV1.prototype.getCollectionFields = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}/fields', - method: 'GET', - path: pick(params, ['environment_id', 'collection_id']), - json: true - }, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Ensures a filename is always set because discovery ignores documents that do not have a filename set. - * @param file - * @private - */ -DiscoveryV1._ensureFilename = function(file) { - // no changes needed for streams created by fs.ReadStream (or similar looking streams) - if (isStream.isReadable(file) && file.path) { - return file; - } - - // next handle request-style value/options objects - if (file && file.hasOwnProperty('value') && file.hasOwnProperty('options')) { - if (file.options.filename) { - return file; - } - return { - value: file.value, - options: Object.assign({ filename: '_' }, file.options) - }; - } - - // finally, handle all other cases by wrapping them in a request-style value/options object - return { - value: file, - options: { - filename: '_' - } - }; -}; - -/** - * Add a document to a collection - * @param {object} params - * @param {String} params.environment_id environment guid for the collection - * @param {string} params.collection_id the guid of the collection to delete - * @param {Buffer|ReadableStream|Object} params.file a file to post (smaller than 50mb). In some cases you will need to supply an object with {value: data, options: {contentType: /...'}} - * @param {string} [params.configuration_id] config guid - * @param {object} [params.metadata] JSON object with file metadata - * @param {function} callback - * @return {ReadableStream|undefined} - */ -DiscoveryV1.prototype.addDocument = function(params, callback) { - params = params || {}; - - const queryParams = pick(params, ['configuration_id']); - const formDataParams = pick(params, ['file', 'metadata']); - - // Discovery only accepts files that have a filename specified - if (formDataParams.file) { - formDataParams.file = DiscoveryV1._ensureFilename(formDataParams.file); - } - - if (formDataParams.metadata && typeof formDataParams.metadata === 'object') { - formDataParams.metadata = JSON.stringify(formDataParams.metadata); - } - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}/documents', - method: 'POST', - path: pick(params, ['environment_id', 'collection_id']), - qs: queryParams, - formData: formDataParams, - json: true - }, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Helper method, similar to updateDocument except that the file param expects a JSON object - * @param {object} params - * @param {String} params.environment_id environment guid for the collection - * @param {string} params.collection_id the guid of the collection to delete - * @param {Object} params.file non-stringified JSON object - * @param {string} [params.configuration_id] config guid - * @param {object} [params.metadata] JSON object with file metadata - * @param {function} callback - * @return {ReadableStream|undefined} - */ -DiscoveryV1.prototype.addJsonDocument = function(params, callback) { - const fileParamType = typeof params.file; - - if (fileParamType !== 'object') { - throw new Error(`Argument error: params.file must be an object, but got ${fileParamType}.`); - } - - params = Object.assign({}, params, { - file: { - value: JSON.stringify(params.file), - options: { - filename: '_.json' - } - } - }); - return this.addDocument(params, callback); -}; - -/** - * Update or partially update a document to create or replace an existing document - * @param params - * @param {String} params.environment_id environment guid for the collection - * @param {string} params.collection_id the guid of the collection - * @param {string} params.document_id the guid of the document to update - * @param {Object} params.file non-stringified JSON object - * @param {string} [params.configuration_id] config guid - * @param {object} [params.metadata] file metadata, including content-type (will infer if missing) - * @param callback - * @return {ReadableStream|undefined} - */ -DiscoveryV1.prototype.updateJsonDocument = function(params, callback) { - const fileParamType = typeof params.file; - - if (fileParamType !== 'object') { - throw new Error(`Argument error: params.file must be an object, but got ${fileParamType}.`); - } - - params = Object.assign({}, params, { - file: { - value: JSON.stringify(params.file), - options: { - filename: '_.json' - } - } - }); - return this.updateDocument(params, callback); -}; - -/** - * Update or partially update a document to create or replace an existing document - * @param params - * @param {String} params.environment_id environment guid for the collection - * @param {string} params.collection_id the guid of the collection - * @param {string} params.document_id the guid of the document to update - * @param {Buffer|ReadableStream|Object} params.file a file to post (smaller than 50mb) - * @param {string} [params.configuration_id] config guid - * @param {object} [params.metadata] file metadata, including content-type (will infer if missing) - * @param callback - * @return {ReadableStream|undefined} - */ -DiscoveryV1.prototype.updateDocument = function(params, callback) { - params = params || {}; - - const queryParams = pick(params, ['configuration_id']); - const formDataParams = pick(params, ['file', 'metadata']); - - // Discovery only accepts files that have a filename specified - if (formDataParams.file) { - formDataParams.file = DiscoveryV1._ensureFilename(formDataParams.file); - } - - if (formDataParams.metadata && typeof formDataParams.metadata === 'object') { - formDataParams.metadata = JSON.stringify(formDataParams.metadata); - } - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}/documents/{document_id}', - method: 'POST', - path: pick(params, ['environment_id', 'collection_id', 'document_id']), - qs: queryParams, - formData: formDataParams, - json: true - }, - requiredParams: ['environment_id', 'collection_id', 'document_id', 'file'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Delete a specific document - * @param params - * @param {String} params.environment_id environment guid for the collection - * @param {string} params.collection_id the guid of the collection to delete - * @param {string} params.document_id the guid of the document to delete - * @param callback - * @return {ReadableStream|undefined} - */ -DiscoveryV1.prototype.deleteDocument = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}/documents/{document_id}', - method: 'DELETE', - path: pick(params, ['environment_id', 'collection_id', 'document_id']), - json: true - }, - requiredParams: ['environment_id', 'collection_id', 'document_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Queries the collection - * - * @param {Object} params - * @param {String} params.environment_id - * @param {string} params.collection_id - * @param {String} [params.query] A query search returns all possible results, even when it's not very relevant, with the most relevant documents listed first. Use a query search when you want to find the most relevant search results. Results are scored between 0 and 1, with 1 being an exact match and 0 being not a match at all. - * @param {String} [params.natural_language_query] BETA - A natural language query that returns relevant documents by using training data and natural language understanding. You cannot use this parameter and the query parameter in the same query. - * @param {String} [params.filter] A cacheable query that allows you to limit the information returned to exclude anything that isn't related to what you are searching. Filter searches are better for metadata type searches and when you are trying to get a sense of concepts in the dataset. - * @param {String} [params.aggregation] An aggregation search uses combinations of filters and query search to return an exact answer. Aggregations are useful for building applications, because you can use them to build lists, tables, and time series. For a full list of possible aggregrations, see the Query reference. - * @param {Number} [params.count=10] Number of documents to return - * @param {Number} [params.offset=0] For pagination purposes. Returns additional pages of results. Deep pagination is highly unperformant, and should be avoided. - * @param {String} [params.return] A comma separated list of the portion of the document hierarchy to return. - * @param {String} [params.sort] A comma separated list of fields in the document to sort on. You can optionally specify a sort direction by prefixing the field with - for descending or + for ascending. Ascending is the default sort direction if no prefix is specified. - * @param {Boolean} [params.passages=false] BETA - A boolean that specifies whether the service returns a set of the most relevant passages from the documents returned by a query. The passages parameter works only on private collections. It does not work in the Watson Discovery News collection. - * @param {String} [params.passages.fields] A comma-separated list of fields in the index that passages will be drawn from. If this parameter not specified then all top level field are included. - * @param {Number} [params.passages.count=10] The maximum number of passages to return. The search will return fewer if that is the total number found. The default is 10. The maximum is 100. - * @param {Number} [params.passages.characters=400] The approximate number of characters that any one passage should have. The default is 400. The minimum is 50. The maximum is 2000. - */ -DiscoveryV1.prototype.query = function(params, callback) { - params = params || {}; - - // query and natural_language_query can't both be populated - if (params.query && params.natural_language_query) { - delete params.natural_language_query; - } - - const parameters = { - options: { - url: '/v1/environments/{environment_id}/collections/{collection_id}/query', - method: 'GET', - json: true, - path: pick(params, ['environment_id', 'collection_id']), - qs: pick(params, [ - 'query', - 'natural_language_query', - 'filter', - 'aggregation', - 'count', - 'offset', - 'return', - 'sort', - 'passages', - 'highlight', - 'passages.fields', - 'passages.count', - 'passages.characters' - ]) - }, - requiredParams: ['environment_id', 'collection_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -module.exports = DiscoveryV1; diff --git a/discovery/v2.ts b/discovery/v2.ts new file mode 100644 index 0000000000..eed4c28af9 --- /dev/null +++ b/discovery/v2.ts @@ -0,0 +1,6899 @@ +/** + * (C) Copyright IBM Corp. 2019, 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * IBM OpenAPI SDK Code Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +import * as extend from 'extend'; +import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http'; +import { + AbortSignal, + Authenticator, + BaseService, + UserOptions, + getAuthenticatorFromEnvironment, + validateParams, +} from 'ibm-cloud-sdk-core'; +import { getSdkHeaders } from '../lib/common'; + +/** + * IBM Watson® Discovery is a cognitive search and content analytics engine that you can add to applications to + * identify patterns, trends and actionable insights to drive better decision-making. Securely unify structured and + * unstructured data with pre-enriched content, and use a simplified query language to eliminate the need for manual + * filtering of results. + * + * API Version: 2.0 + * See: https://cloud.ibm.com/docs/discovery-data + */ + +class DiscoveryV2 extends BaseService { + static DEFAULT_SERVICE_URL: string = 'https://api.us-south.discovery.watson.cloud.ibm.com'; + + static DEFAULT_SERVICE_NAME: string = 'discovery'; + + /** Release date of the version of the API you want to use. Specify dates in YYYY-MM-DD format. The current + * version is `2023-03-31`. + */ + version: string; + + /** + * Construct a DiscoveryV2 object. + * + * @param {Object} options - Options for the service. + * @param {string} options.version - Release date of the version of the API you want to use. Specify dates in + * YYYY-MM-DD format. The current version is `2023-03-31`. + * @param {string} [options.serviceUrl] - The base URL for the service + * @param {OutgoingHttpHeaders} [options.headers] - Default headers that shall be included with every request to the service. + * @param {string} [options.serviceName] - The name of the service to configure + * @param {Authenticator} [options.authenticator] - The Authenticator object used to authenticate requests to the service. Defaults to environment if not set + * @constructor + * @returns {DiscoveryV2} + */ + constructor(options: UserOptions) { + options = options || {}; + + const _requiredParams = ['version']; + const _validationErrors = validateParams(options, _requiredParams, null); + if (_validationErrors) { + throw _validationErrors; + } + if (!options.serviceName) { + options.serviceName = DiscoveryV2.DEFAULT_SERVICE_NAME; + } + // If the caller didn't supply an authenticator, construct one from external configuration. + if (!options.authenticator) { + options.authenticator = getAuthenticatorFromEnvironment(options.serviceName); + } + super(options); + this.configureService(options.serviceName); + if (options.serviceUrl) { + this.setServiceUrl(options.serviceUrl); + } + this.version = options.version; + } + + /************************* + * projects + ************************/ + + /** + * List projects. + * + * Lists existing projects for this instance. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listProjects( + params?: DiscoveryV2.ListProjectsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listProjects'); + + const parameters = { + options: { + url: '/v2/projects', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create a project. + * + * Create a new project for this instance. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.name - The human readable name of this project. + * @param {string} params.type - The type of project. + * + * The `content_intelligence` type is a *Document Retrieval for Contracts* project and the `other` type is a *Custom* + * project. + * + * The `content_mining` and `content_intelligence` types are available with Premium plan managed deployments and + * installed deployments only. + * + * The Intelligent Document Processing (IDP) project type is available from IBM Cloud-managed instances only. + * @param {DefaultQueryParams} [params.defaultQueryParameters] - Default query parameters for this project. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createProject( + params: DiscoveryV2.CreateProjectParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['name', 'type']; + const _validParams = ['name', 'type', 'defaultQueryParameters', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'type': _params.type, + 'default_query_parameters': _params.defaultQueryParameters, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createProject'); + + const parameters = { + options: { + url: '/v2/projects', + method: 'POST', + body, + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get project. + * + * Get details on the specified project. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getProject( + params: DiscoveryV2.GetProjectParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getProject'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update a project. + * + * Update the specified project's name. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} [params.name] - The new name to give this project. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateProject( + params: DiscoveryV2.UpdateProjectParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'name', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'updateProject'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete a project. + * + * Deletes the specified project. + * + * **Important:** Deleting a project deletes everything that is part of the specified project, including all + * collections. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteProject( + params: DiscoveryV2.DeleteProjectParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteProject'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * List fields. + * + * Gets a list of the unique fields (and their types) stored in the specified collections. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string[]} [params.collectionIds] - Comma separated list of the collection IDs. If this parameter is not + * specified, all collections in the project are used. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listFields( + params: DiscoveryV2.ListFieldsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'collectionIds', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'collection_ids': _params.collectionIds, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listFields'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/fields', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * collections + ************************/ + + /** + * List collections. + * + * Lists existing collections for the specified project. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listCollections( + params: DiscoveryV2.ListCollectionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listCollections'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create a collection. + * + * Create a new collection in the specified project. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.name - The name of the collection. + * @param {string} [params.description] - A description of the collection. + * @param {string} [params.language] - The language of the collection. For a list of supported languages, see the + * [product documentation](/docs/discovery-data?topic=discovery-data-language-support). + * @param {boolean} [params.ocrEnabled] - If set to `true`, optical character recognition (OCR) is enabled. For more + * information, see [Optical character recognition](/docs/discovery-data?topic=discovery-data-collections#ocr). + * @param {CollectionEnrichment[]} [params.enrichments] - An array of enrichments that are applied to this collection. + * To get a list of enrichments that are available for a project, use the [List enrichments](#listenrichments) method. + * + * If no enrichments are specified when the collection is created, the default enrichments for the project type are + * applied. For more information about project default settings, see the [product + * documentation](/docs/discovery-data?topic=discovery-data-project-defaults). + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createCollection( + params: DiscoveryV2.CreateCollectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'name']; + const _validParams = ['projectId', 'name', 'description', 'language', 'ocrEnabled', 'enrichments', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'language': _params.language, + 'ocr_enabled': _params.ocrEnabled, + 'enrichments': _params.enrichments, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createCollection'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get collection details. + * + * Get details about the specified collection. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getCollection( + params: DiscoveryV2.GetCollectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getCollection'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update a collection. + * + * Updates the specified collection's name, description, enrichments, and configuration. + * + * If you apply normalization rules to data in an existing collection, you must initiate reprocessing of the + * collection. To do so, from the *Manage fields* page in the product user interface, temporarily change the data type + * of a field to enable the reprocess button. Change the data type of the field back to its original value, and then + * click **Apply changes and reprocess**. + * + * To remove a configuration that applies JSON normalization operations as part of the conversion phase of ingestion, + * specify an empty `json_normalizations` object (`[]`) in the request. + * + * To remove a configuration that applies JSON normalization operations after enrichments are applied, specify an + * empty `normalizations` object (`[]`) in the request. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string} [params.name] - The new name of the collection. + * @param {string} [params.description] - The new description of the collection. + * @param {boolean} [params.ocrEnabled] - If set to `true`, optical character recognition (OCR) is enabled. For more + * information, see [Optical character recognition](/docs/discovery-data?topic=discovery-data-collections#ocr). + * @param {CollectionEnrichment[]} [params.enrichments] - An array of enrichments that are applied to this collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateCollection( + params: DiscoveryV2.UpdateCollectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'name', 'description', 'ocrEnabled', 'enrichments', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'ocr_enabled': _params.ocrEnabled, + 'enrichments': _params.enrichments, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'updateCollection'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete a collection. + * + * Deletes the specified collection from the project. All documents stored in the specified collection and not shared + * is also deleted. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteCollection( + params: DiscoveryV2.DeleteCollectionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteCollection'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * documents + ************************/ + + /** + * List documents. + * + * Lists the documents in the specified collection. The list includes only the document ID of each document and + * returns information for up to 10,000 documents. + * + * **Note**: This method is available only from Cloud Pak for Data version 4.0.9 and later installed instances, and + * from IBM Cloud-managed instances. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {number} [params.count] - The maximum number of documents to return. Up to 1,000 documents are returned by + * default. The maximum number allowed is 10,000. + * @param {string} [params.status] - Filters the documents to include only documents with the specified ingestion + * status. The options include: + * + * * `available`: Ingestion is finished and the document is indexed. + * + * * `failed`: Ingestion is finished, but the document is not indexed because of an error. + * + * * `pending`: The document is uploaded, but the ingestion process is not started. + * + * * `processing`: Ingestion is in progress. + * + * You can specify one status value or add a comma-separated list of more than one status value. For example, + * `available,failed`. + * @param {boolean} [params.hasNotices] - If set to `true`, only documents that have notices, meaning documents for + * which warnings or errors were generated during the ingestion, are returned. If set to `false`, only documents that + * don't have notices are returned. If unspecified, no filter based on notices is applied. + * + * Notice details are not available in the result, but you can use the [Query collection + * notices](#querycollectionnotices) method to find details by adding the parameter + * `query=notices.document_id:{document-id}`. + * @param {boolean} [params.isParent] - If set to `true`, only parent documents, meaning documents that were split + * during the ingestion process and resulted in two or more child documents, are returned. If set to `false`, only + * child documents are returned. If unspecified, no filter based on the parent or child relationship is applied. + * + * CSV files, for example, are split into separate documents per line and JSON files are split into separate documents + * per object. + * @param {string} [params.parentDocumentId] - Filters the documents to include only child documents that were + * generated when the specified parent document was processed. + * @param {string} [params.sha256] - Filters the documents to include only documents with the specified SHA-256 hash. + * Format the hash as a hexadecimal string. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listDocuments( + params: DiscoveryV2.ListDocumentsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'count', 'status', 'hasNotices', 'isParent', 'parentDocumentId', 'sha256', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'count': _params.count, + 'status': _params.status, + 'has_notices': _params.hasNotices, + 'is_parent': _params.isParent, + 'parent_document_id': _params.parentDocumentId, + 'sha256': _params.sha256, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listDocuments'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/documents', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Add a document. + * + * Add a document to a collection with optional metadata. + * + * Returns immediately after the system has accepted the document for processing. + * + * Use this method to upload a file to the collection. You cannot use this method to crawl an external data source. + * + * * For a list of supported file types, see the [product + * documentation](/docs/discovery-data?topic=discovery-data-collections#supportedfiletypes). + * + * * You must provide document content, metadata, or both. If the request is missing both document content and + * metadata, it is rejected. + * + * * You can set the **Content-Type** parameter on the **file** part to indicate the media type of the document. If + * the **Content-Type** parameter is missing or is one of the generic media types (for example, + * `application/octet-stream`), then the service attempts to automatically detect the document's media type. + * + * * If the document is uploaded to a collection that shares its data with another collection, the + * **X-Watson-Discovery-Force** header must be set to `true`. + * + * * In curl requests only, you can assign an ID to a document that you add by appending the ID to the endpoint + * (`/v2/projects/{project_id}/collections/{collection_id}/documents/{document_id}`). If a document already exists + * with the specified ID, it is replaced. + * + * For more information about how certain file types and field names are handled when a file is added to a collection, + * see the [product documentation](/docs/discovery-data?topic=discovery-data-index-overview#field-name-limits). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {NodeJS.ReadableStream | Buffer} [params.file] - **Add a document**: The content of the document to ingest. + * For the supported file types and maximum supported file size limits when adding a document, see [the + * documentation](/docs/discovery-data?topic=discovery-data-collections#supportedfiletypes). + * + * **Analyze a document**: The content of the document to analyze but not ingest. Only the `application/json` content + * type is supported by the Analyze API. For maximum supported file size limits, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-analyzeapi#analyzeapi-limits). + * @param {string} [params.filename] - The filename for file. + * @param {string} [params.fileContentType] - The content type of file. + * @param {string} [params.metadata] - Add information about the file that you want to include in the response. + * + * The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB are rejected. + * + * Example: + * + * ``` + * { + * "filename": "favorites2.json", + * "file_type": "json" + * }. + * @param {boolean} [params.xWatsonDiscoveryForce] - When `true`, the uploaded document is added to the collection + * even if the data for that collection is shared with other collections. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public addDocument( + params: DiscoveryV2.AddDocumentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'file', 'filename', 'fileContentType', 'metadata', 'xWatsonDiscoveryForce', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'file': { + data: _params.file, + filename: _params.filename, + contentType: _params.fileContentType, + }, + 'metadata': _params.metadata, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'addDocument'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/documents', + method: 'POST', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + 'X-Watson-Discovery-Force': _params.xWatsonDiscoveryForce, + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get document details. + * + * Get details about a specific document, whether the document is added by uploading a file or by crawling an external + * data source. + * + * **Note**: This method is available only from Cloud Pak for Data version 4.0.9 and later installed instances, and + * from IBM Cloud-managed instances. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string} params.documentId - The ID of the document. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getDocument( + params: DiscoveryV2.GetDocumentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId', 'documentId']; + const _validParams = ['projectId', 'collectionId', 'documentId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + 'document_id': _params.documentId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getDocument'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/documents/{document_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update a document. + * + * Replace an existing document or add a document with a specified document ID. Starts ingesting a document with + * optional metadata. + * + * Use this method to upload a file to a collection. You cannot use this method to crawl an external data source. + * + * If the document is uploaded to a collection that shares its data with another collection, the + * **X-Watson-Discovery-Force** header must be set to `true`. + * + * **Notes:** + * + * * Uploading a new document with this method automatically replaces any existing document stored with the same + * document ID. + * + * * If an uploaded document is split into child documents during ingestion, all existing child documents are + * overwritten, even if the updated version of the document has fewer child documents. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string} params.documentId - The ID of the document. + * @param {NodeJS.ReadableStream | Buffer} [params.file] - **Add a document**: The content of the document to ingest. + * For the supported file types and maximum supported file size limits when adding a document, see [the + * documentation](/docs/discovery-data?topic=discovery-data-collections#supportedfiletypes). + * + * **Analyze a document**: The content of the document to analyze but not ingest. Only the `application/json` content + * type is supported by the Analyze API. For maximum supported file size limits, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-analyzeapi#analyzeapi-limits). + * @param {string} [params.filename] - The filename for file. + * @param {string} [params.fileContentType] - The content type of file. + * @param {string} [params.metadata] - Add information about the file that you want to include in the response. + * + * The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB are rejected. + * + * Example: + * + * ``` + * { + * "filename": "favorites2.json", + * "file_type": "json" + * }. + * @param {boolean} [params.xWatsonDiscoveryForce] - When `true`, the uploaded document is added to the collection + * even if the data for that collection is shared with other collections. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateDocument( + params: DiscoveryV2.UpdateDocumentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId', 'documentId']; + const _validParams = ['projectId', 'collectionId', 'documentId', 'file', 'filename', 'fileContentType', 'metadata', 'xWatsonDiscoveryForce', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'file': { + data: _params.file, + filename: _params.filename, + contentType: _params.fileContentType, + }, + 'metadata': _params.metadata, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + 'document_id': _params.documentId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'updateDocument'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/documents/{document_id}', + method: 'POST', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + 'X-Watson-Discovery-Force': _params.xWatsonDiscoveryForce, + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete a document. + * + * Deletes the document with the document ID that you specify from the collection. Removes uploaded documents from the + * collection permanently. If you delete a document that was added by crawling an external data source, the document + * will be added again with the next scheduled crawl of the data source. The delete function removes the document from + * the collection, not from the external data source. + * + * **Note:** Files such as CSV or JSON files generate subdocuments when they are added to a collection. If you delete + * a subdocument, and then repeat the action that created it, the deleted document is added back in to your + * collection. To remove subdocuments that are generated by an uploaded file, delete the original document instead. + * You can get the document ID of the original document from the `parent_document_id` of the subdocument result. + * + * If the document with the given document ID exists, Watson Discovery first marks or tags the document as deleted + * when it sends the 200 response code. At a later time (within a couple of minutes unless the document has many child + * documents), it removes the document from the collection. + * + * There is no bulk document delete API. Documents must be deleted one at a time using this API. However, you can + * delete a collection, and all the documents from the collection are removed along with the collection. + * + * The document will be deleted from the given collection only, not from the corresponding data source. Wherever + * relevant, an incremental crawl will not bring back the document into Watson Discovery from the data source. Only a + * full crawl will retrieve the deleted document back from the data source provided it is still present in the same + * data source. + * + * Finally, if multiple collections share the same dataset, deleting a document from a collection will remove it from + * that collection only (in other remaining collections the document will still exist). The document will be removed + * from the dataset, if this document is deleted from all the collections that share the same dataset. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string} params.documentId - The ID of the document. + * @param {boolean} [params.xWatsonDiscoveryForce] - When `true`, the uploaded document is added to the collection + * even if the data for that collection is shared with other collections. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteDocument( + params: DiscoveryV2.DeleteDocumentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId', 'documentId']; + const _validParams = ['projectId', 'collectionId', 'documentId', 'xWatsonDiscoveryForce', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + 'document_id': _params.documentId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteDocument'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/documents/{document_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'X-Watson-Discovery-Force': _params.xWatsonDiscoveryForce, + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * queries + ************************/ + + /** + * Query a project. + * + * Search your data by submitting queries that are written in natural language or formatted in the Discovery Query + * Language. For more information, see the [Discovery + * documentation](/docs/discovery-data?topic=discovery-data-query-concepts). The default query parameters differ by + * project type. For more information about the project default settings, see the [Discovery + * documentation](/docs/discovery-data?topic=discovery-data-query-defaults). See [the Projects API + * documentation](#create-project) for details about how to set custom default query settings. + * + * The length of the UTF-8 encoding of the POST body cannot exceed 10,000 bytes, which is roughly equivalent to 10,000 + * characters in English. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string[]} [params.collectionIds] - A comma-separated list of collection IDs to be queried against. + * @param {string} [params.filter] - Searches for documents that match the Discovery Query Language criteria that is + * specified as input. Filter calls are cached and are faster than query calls because the results are not ordered by + * relevance. When used with the **aggregation**, **query**, or **natural_language_query** parameters, the **filter** + * parameter runs first. This parameter is useful for limiting results to those that contain specific metadata values. + * @param {string} [params.query] - A query search that is written in the Discovery Query Language and returns all + * matching documents in your data set with full enrichments and full text, and with the most relevant documents + * listed first. Use a query search when you want to find the most relevant search results. You can use this parameter + * or the **natural_language_query** parameter to specify the query input, but not both. + * @param {string} [params.naturalLanguageQuery] - A natural language query that returns relevant documents by using + * training data and natural language understanding. You can use this parameter or the **query** parameter to specify + * the query input, but not both. To filter the results based on criteria you specify, include the **filter** + * parameter in the request. + * @param {string} [params.aggregation] - An aggregation search that returns an exact answer by combining query search + * with filters. Useful for applications to build lists, tables, and time series. For more information about the + * supported types of aggregations, see the [Discovery + * documentation](/docs/discovery-data?topic=discovery-data-query-aggregations). + * @param {number} [params.count] - Number of results to return. + * @param {string[]} [params._return] - A list of the fields in the document hierarchy to return. You can specify both + * root-level (`text`) and nested (`extracted_metadata.filename`) fields. If this parameter is an empty list, then all + * fields are returned. + * @param {number} [params.offset] - The number of query results to skip at the beginning. Consider that the `count` + * is set to 10 (the default value) and the total number of results that are returned is 100. In this case, the + * following examples show the returned results for different `offset` values: + * + * * If `offset` is set to 95, it returns the last 5 results. + * + * * If `offset` is set to 10, it returns the second batch of 10 results. + * + * * If `offset` is set to 100 or more, it returns empty results. + * @param {string} [params.sort] - A comma-separated list of fields in the document to sort on. You can optionally + * specify a sort direction by prefixing the field with `-` for descending or `+` for ascending. Ascending is the + * default sort direction if no prefix is specified. + * @param {boolean} [params.highlight] - When `true`, a highlight field is returned for each result that contains + * fields that match the query. The matching query terms are emphasized with surrounding `` tags. This + * parameter is ignored if **passages.enabled** and **passages.per_document** are `true`, in which case passages are + * returned for each document instead of highlights. + * @param {boolean} [params.spellingSuggestions] - When `true` and the **natural_language_query** parameter is used, + * the **natural_language_query** parameter is spell checked. The most likely correction is returned in the + * **suggested_query** field of the response (if one exists). + * @param {QueryLargeTableResults} [params.tableResults] - Configuration for table retrieval. + * @param {QueryLargeSuggestedRefinements} [params.suggestedRefinements] - Configuration for suggested refinements. + * + * **Note**: The **suggested_refinements** parameter that identified dynamic facets from the data is deprecated. + * @param {QueryLargePassages} [params.passages] - Configuration for passage retrieval. + * @param {QueryLargeSimilar} [params.similar] - Finds results from documents that are similar to documents of + * interest. Use this parameter to add a *More like these* function to your search. You can include this parameter + * with or without a **query**, **filter** or **natural_language_query** parameter. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public query( + params: DiscoveryV2.QueryParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'collectionIds', 'filter', 'query', 'naturalLanguageQuery', 'aggregation', 'count', '_return', 'offset', 'sort', 'highlight', 'spellingSuggestions', 'tableResults', 'suggestedRefinements', 'passages', 'similar', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'collection_ids': _params.collectionIds, + 'filter': _params.filter, + 'query': _params.query, + 'natural_language_query': _params.naturalLanguageQuery, + 'aggregation': _params.aggregation, + 'count': _params.count, + 'return': _params._return, + 'offset': _params.offset, + 'sort': _params.sort, + 'highlight': _params.highlight, + 'spelling_suggestions': _params.spellingSuggestions, + 'table_results': _params.tableResults, + 'suggested_refinements': _params.suggestedRefinements, + 'passages': _params.passages, + 'similar': _params.similar, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'query'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/query', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get Autocomplete Suggestions. + * + * Returns completion query suggestions for the specified prefix. + * + * Suggested words are based on terms from the project documents. Suggestions are not based on terms from the + * project's search history, and the project does not learn from previous user choices. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.prefix - The prefix to use for autocompletion. For example, the prefix `Ho` could + * autocomplete to `hot`, `housing`, or `how`. + * @param {string[]} [params.collectionIds] - Comma separated list of the collection IDs. If this parameter is not + * specified, all collections in the project are used. + * @param {string} [params.field] - The field in the result documents that autocompletion suggestions are identified + * from. + * @param {number} [params.count] - The number of autocompletion suggestions to return. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getAutocompletion( + params: DiscoveryV2.GetAutocompletionParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'prefix']; + const _validParams = ['projectId', 'prefix', 'collectionIds', 'field', 'count', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'prefix': _params.prefix, + 'collection_ids': _params.collectionIds, + 'field': _params.field, + 'count': _params.count, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getAutocompletion'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/autocompletion', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Query collection notices. + * + * Finds collection-level notices (errors and warnings) that are generated when documents are ingested. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string} [params.filter] - Searches for documents that match the Discovery Query Language criteria that is + * specified as input. Filter calls are cached and are faster than query calls because the results are not ordered by + * relevance. When used with the `aggregation`, `query`, or `natural_language_query` parameters, the `filter` + * parameter runs first. This parameter is useful for limiting results to those that contain specific metadata values. + * @param {string} [params.query] - A query search that is written in the Discovery Query Language and returns all + * matching documents in your data set with full enrichments and full text, and with the most relevant documents + * listed first. You can use this parameter or the **natural_language_query** parameter to specify the query input, + * but not both. + * @param {string} [params.naturalLanguageQuery] - A natural language query that returns relevant documents by using + * natural language understanding. You can use this parameter or the **query** parameter to specify the query input, + * but not both. To filter the results based on criteria you specify, include the **filter** parameter in the request. + * @param {number} [params.count] - Number of results to return. The maximum for the **count** and **offset** values + * together in any one query is **10,000**. + * @param {number} [params.offset] - The number of query results to skip at the beginning. For example, if the total + * number of results that are returned is 10 and the offset is 8, it returns the last two results. The maximum for the + * **count** and **offset** values together in any one query is **10000**. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public queryCollectionNotices( + params: DiscoveryV2.QueryCollectionNoticesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'filter', 'query', 'naturalLanguageQuery', 'count', 'offset', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'filter': _params.filter, + 'query': _params.query, + 'natural_language_query': _params.naturalLanguageQuery, + 'count': _params.count, + 'offset': _params.offset, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'queryCollectionNotices'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/notices', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Query project notices. + * + * Finds project-level notices (errors and warnings). Currently, project-level notices are generated by relevancy + * training. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} [params.filter] - Searches for documents that match the Discovery Query Language criteria that is + * specified as input. Filter calls are cached and are faster than query calls because the results are not ordered by + * relevance. When used with the `aggregation`, `query`, or `natural_language_query` parameters, the `filter` + * parameter runs first. This parameter is useful for limiting results to those that contain specific metadata values. + * @param {string} [params.query] - A query search that is written in the Discovery Query Language and returns all + * matching documents in your data set with full enrichments and full text, and with the most relevant documents + * listed first. You can use this parameter or the **natural_language_query** parameter to specify the query input, + * but not both. + * @param {string} [params.naturalLanguageQuery] - A natural language query that returns relevant documents by using + * natural language understanding. You can use this parameter or the **query** parameter to specify the query input, + * but not both. To filter the results based on criteria you specify, include the **filter** parameter in the request. + * @param {number} [params.count] - Number of results to return. The maximum for the **count** and **offset** values + * together in any one query is **10,000**. + * @param {number} [params.offset] - The number of query results to skip at the beginning. For example, if the total + * number of results that are returned is 10 and the offset is 8, it returns the last two results. The maximum for the + * **count** and **offset** values together in any one query is **10000**. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public queryNotices( + params: DiscoveryV2.QueryNoticesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'filter', 'query', 'naturalLanguageQuery', 'count', 'offset', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'filter': _params.filter, + 'query': _params.query, + 'natural_language_query': _params.naturalLanguageQuery, + 'count': _params.count, + 'offset': _params.offset, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'queryNotices'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/notices', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * queryModifications + ************************/ + + /** + * Get a custom stop words list. + * + * Returns the custom stop words list that is used by the collection. For information about the default stop words + * lists that are applied to queries, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-stopwords). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getStopwordList( + params: DiscoveryV2.GetStopwordListParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getStopwordList'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/stopwords', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create a custom stop words list. + * + * Adds a list of custom stop words. Stop words are words that you want the service to ignore when they occur in a + * query because they're not useful in distinguishing the semantic meaning of the query. The stop words list cannot + * contain more than 1 million characters. + * + * A default stop words list is used by all collections. The default list is applied both at indexing time and at + * query time. A custom stop words list that you add is used at query time only. + * + * The custom stop words list augments the default stop words list; you cannot remove stop words. For information + * about the default stop words lists per language, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-stopwords). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string[]} [params.stopwords] - List of stop words. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createStopwordList( + params: DiscoveryV2.CreateStopwordListParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'stopwords', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'stopwords': _params.stopwords, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createStopwordList'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/stopwords', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete a custom stop words list. + * + * Deletes a custom stop words list to stop using it in queries against the collection. After a custom stop words list + * is deleted, the default stop words list is used. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteStopwordList( + params: DiscoveryV2.DeleteStopwordListParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteStopwordList'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/stopwords', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get the expansion list. + * + * Returns the current expansion list for the specified collection. If an expansion list is not specified, an empty + * expansions array is returned. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listExpansions( + params: DiscoveryV2.ListExpansionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listExpansions'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/expansions', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create or update an expansion list. + * + * Creates or replaces the expansion list for this collection. An expansion list introduces alternative wording for + * key terms that are mentioned in your collection. By identifying synonyms or common misspellings, you expand the + * scope of a query beyond exact matches. The maximum number of expanded terms allowed per collection is 5,000. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {Expansion[]} params.expansions - An array of query expansion definitions. + * + * Each object in the **expansions** array represents a term or set of terms that will be expanded into other terms. + * Each expansion object can be configured as `bidirectional` or `unidirectional`. + * + * * **Bidirectional**: Each entry in the `expanded_terms` list expands to include all expanded terms. For example, a + * query for `ibm` expands to `ibm OR international business machines OR big blue`. + * + * * **Unidirectional**: The terms in `input_terms` in the query are replaced by the terms in `expanded_terms`. For + * example, a query for the often misused term `on premise` is converted to `on premises OR on-premises` and does not + * contain the original term. If you want an input term to be included in the query, then repeat the input term in the + * expanded terms list. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createExpansions( + params: DiscoveryV2.CreateExpansionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId', 'expansions']; + const _validParams = ['projectId', 'collectionId', 'expansions', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'expansions': _params.expansions, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createExpansions'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/expansions', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete the expansion list. + * + * Removes the expansion information for this collection. To disable query expansion for a collection, delete the + * expansion list. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteExpansions( + params: DiscoveryV2.DeleteExpansionsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteExpansions'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/expansions', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * componentSettings + ************************/ + + /** + * List component settings. + * + * Returns default configuration settings for components. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getComponentSettings( + params: DiscoveryV2.GetComponentSettingsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getComponentSettings'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/component_settings', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * trainingData + ************************/ + + /** + * List training queries. + * + * List the training queries for the specified project. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listTrainingQueries( + params: DiscoveryV2.ListTrainingQueriesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listTrainingQueries'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/training_data/queries', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete training queries. + * + * Removes all training queries for the specified project. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteTrainingQueries( + params: DiscoveryV2.DeleteTrainingQueriesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteTrainingQueries'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/training_data/queries', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create a training query. + * + * Add a query to the training data for this project. The query can contain a filter and natural language query. + * + * **Note**: You cannot apply relevancy training to a `content_mining` project type. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.naturalLanguageQuery - The natural text query that is used as the training query. + * @param {TrainingExample[]} params.examples - Array of training examples. + * @param {string} [params.filter] - The filter used on the collection before the **natural_language_query** is + * applied. Only specify a filter if the documents that you consider to be most relevant are not included in the top + * 100 results when you submit test queries. If you specify a filter during training, apply the same filter to queries + * that are submitted at runtime for optimal ranking results. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createTrainingQuery( + params: DiscoveryV2.CreateTrainingQueryParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'naturalLanguageQuery', 'examples']; + const _validParams = ['projectId', 'naturalLanguageQuery', 'examples', 'filter', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'natural_language_query': _params.naturalLanguageQuery, + 'examples': _params.examples, + 'filter': _params.filter, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createTrainingQuery'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/training_data/queries', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get a training data query. + * + * Get details for a specific training data query, including the query string and all examples. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.queryId - The ID of the query used for training. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getTrainingQuery( + params: DiscoveryV2.GetTrainingQueryParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'queryId']; + const _validParams = ['projectId', 'queryId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'query_id': _params.queryId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getTrainingQuery'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/training_data/queries/{query_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update a training query. + * + * Updates an existing training query and its examples. You must resubmit all of the examples with the update request. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.queryId - The ID of the query used for training. + * @param {string} params.naturalLanguageQuery - The natural text query that is used as the training query. + * @param {TrainingExample[]} params.examples - Array of training examples. + * @param {string} [params.filter] - The filter used on the collection before the **natural_language_query** is + * applied. Only specify a filter if the documents that you consider to be most relevant are not included in the top + * 100 results when you submit test queries. If you specify a filter during training, apply the same filter to queries + * that are submitted at runtime for optimal ranking results. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateTrainingQuery( + params: DiscoveryV2.UpdateTrainingQueryParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'queryId', 'naturalLanguageQuery', 'examples']; + const _validParams = ['projectId', 'queryId', 'naturalLanguageQuery', 'examples', 'filter', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'natural_language_query': _params.naturalLanguageQuery, + 'examples': _params.examples, + 'filter': _params.filter, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'query_id': _params.queryId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'updateTrainingQuery'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/training_data/queries/{query_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete a training data query. + * + * Removes details from a training data query, including the query string and all examples. + * + * To delete an example, use the *Update a training query* method and omit the example that you want to delete from + * the example set. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.queryId - The ID of the query used for training. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteTrainingQuery( + params: DiscoveryV2.DeleteTrainingQueryParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'queryId']; + const _validParams = ['projectId', 'queryId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'query_id': _params.queryId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteTrainingQuery'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/training_data/queries/{query_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * enrichments + ************************/ + + /** + * List enrichments. + * + * Lists the enrichments available to this project. The *Part of Speech* and *Sentiment of Phrases* enrichments might + * be listed, but are reserved for internal use only. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listEnrichments( + params: DiscoveryV2.ListEnrichmentsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listEnrichments'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/enrichments', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create an enrichment. + * + * Create an enrichment for use with the specified project. To apply the enrichment to a collection in the project, + * use the [Collections API](/apidocs/discovery-data#createcollection). + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {CreateEnrichment} params.enrichment - Information about a specific enrichment. + * @param {NodeJS.ReadableStream | Buffer} [params.file] - The enrichment file to upload. Expected file types per + * enrichment are as follows: + * + * * CSV for `dictionary` and `sentence_classifier` (the training data CSV file to upload). + * + * * PEAR for `uima_annotator` and `rule_based` (Explorer) + * + * * ZIP for `watson_knowledge_studio_model` and `rule_based` (Studio Advanced Rule Editor). + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createEnrichment( + params: DiscoveryV2.CreateEnrichmentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'enrichment']; + const _validParams = ['projectId', 'enrichment', 'file', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'enrichment': _params.enrichment, + 'file': { + data: _params.file, + contentType: 'application/octet-stream', + }, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createEnrichment'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/enrichments', + method: 'POST', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get enrichment. + * + * Get details about a specific enrichment. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.enrichmentId - The Universally Unique Identifier (UUID) of the enrichment. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getEnrichment( + params: DiscoveryV2.GetEnrichmentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'enrichmentId']; + const _validParams = ['projectId', 'enrichmentId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'enrichment_id': _params.enrichmentId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getEnrichment'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/enrichments/{enrichment_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update an enrichment. + * + * Updates an existing enrichment's name and description. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.enrichmentId - The Universally Unique Identifier (UUID) of the enrichment. + * @param {string} params.name - A new name for the enrichment. + * @param {string} [params.description] - A new description for the enrichment. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateEnrichment( + params: DiscoveryV2.UpdateEnrichmentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'enrichmentId', 'name']; + const _validParams = ['projectId', 'enrichmentId', 'name', 'description', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'enrichment_id': _params.enrichmentId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'updateEnrichment'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/enrichments/{enrichment_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete an enrichment. + * + * Deletes an existing enrichment from the specified project. + * + * **Note:** Only enrichments that have been manually created can be deleted. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.enrichmentId - The Universally Unique Identifier (UUID) of the enrichment. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteEnrichment( + params: DiscoveryV2.DeleteEnrichmentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'enrichmentId']; + const _validParams = ['projectId', 'enrichmentId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'enrichment_id': _params.enrichmentId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteEnrichment'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/enrichments/{enrichment_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * batches + ************************/ + + /** + * List batches. + * + * A batch is a set of documents that are ready for enrichment by an external application. After you apply a webhook + * enrichment to a collection, and then process or upload documents to the collection, Discovery creates a batch with + * a unique **batch_id**. + * + * To start, you must register your external application as a **webhook** type by using the [Create enrichment + * API](/apidocs/discovery-data#createenrichment) method. + * + * Use the List batches API to get the following: + * + * * Notified batches that are not yet pulled by the external enrichment application. + * + * * Batches that are pulled, but not yet pushed to Discovery by the external enrichment application. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listBatches( + params: DiscoveryV2.ListBatchesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listBatches'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/batches', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Pull batches. + * + * Pull a batch of documents from Discovery for enrichment by an external application. Ensure to include the + * `Accept-Encoding: gzip` header in this method to get the file. You can also implement retry logic when calling this + * method to avoid any network errors. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string} params.batchId - The Universally Unique Identifier (UUID) of the document batch that is being + * requested from Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public pullBatches( + params: DiscoveryV2.PullBatchesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId', 'batchId']; + const _validParams = ['projectId', 'collectionId', 'batchId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + 'batch_id': _params.batchId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'pullBatches'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/batches/{batch_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Push batches. + * + * Push a batch of documents to Discovery after annotation by an external application. You can implement retry logic + * when calling this method to avoid any network errors. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {string} params.batchId - The Universally Unique Identifier (UUID) of the document batch that is being + * requested from Discovery. + * @param {NodeJS.ReadableStream | Buffer} [params.file] - A compressed newline-delimited JSON (NDJSON), which is a + * JSON file with one row of data per line. For example, `{batch_id}.ndjson.gz`. For more information, see [Binary + * attachment in the push batches + * method](/docs/discovery-data?topic=discovery-data-external-enrichment#binary-attachment-push-batches). + * + * There is no limitation on the name of the file because Discovery does not use the name for processing. The list of + * features in the document is specified in the `features` object. + * @param {string} [params.filename] - The filename for file. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public pushBatches( + params: DiscoveryV2.PushBatchesParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId', 'batchId']; + const _validParams = ['projectId', 'collectionId', 'batchId', 'file', 'filename', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'file': { + data: _params.file, + filename: _params.filename, + contentType: 'application/octet-stream', + }, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + 'batch_id': _params.batchId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'pushBatches'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/batches/{batch_id}', + method: 'POST', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * documentClassifiers + ************************/ + + /** + * List document classifiers. + * + * Get a list of the document classifiers in a project. Returns only the name and classifier ID of each document + * classifier. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listDocumentClassifiers( + params: DiscoveryV2.ListDocumentClassifiersParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId']; + const _validParams = ['projectId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listDocumentClassifiers'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create a document classifier. + * + * Create a document classifier. You can use the API to create a document classifier in any project type. After you + * create a document classifier, you can use the Enrichments API to create a classifier enrichment, and then the + * Collections API to apply the enrichment to a collection in the project. + * + * **Note:** This method is supported on installed instances (IBM Cloud Pak for Data) or IBM Cloud-managed Premium or + * Enterprise plan instances. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {NodeJS.ReadableStream | Buffer} params.trainingData - The training data CSV file to upload. The CSV file + * must have headers. The file must include a field that contains the text you want to classify and a field that + * contains the classification labels that you want to use to classify your data. If you want to specify multiple + * values in a single field, use a semicolon as the value separator. For a sample file, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-cm-doc-classifier). + * @param {CreateDocumentClassifier} params.classifier - An object that manages the settings and data that is required + * to train a document classification model. + * @param {NodeJS.ReadableStream | Buffer} [params.testData] - The CSV with test data to upload. The column values in + * the test file must be the same as the column values in the training data file. If no test data is provided, the + * training data is split into two separate groups of training and test data. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createDocumentClassifier( + params: DiscoveryV2.CreateDocumentClassifierParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'trainingData', 'classifier']; + const _validParams = ['projectId', 'trainingData', 'classifier', 'testData', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'training_data': { + data: _params.trainingData, + contentType: 'text/csv', + }, + 'classifier': _params.classifier, + 'test_data': { + data: _params.testData, + contentType: 'text/csv', + }, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createDocumentClassifier'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers', + method: 'POST', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get a document classifier. + * + * Get details about a specific document classifier. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getDocumentClassifier( + params: DiscoveryV2.GetDocumentClassifierParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId']; + const _validParams = ['projectId', 'classifierId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getDocumentClassifier'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update a document classifier. + * + * Update the document classifier name or description, update the training data, or add or update the test data. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {UpdateDocumentClassifier} params.classifier - An object that contains a new name or description for a + * document classifier, updated training data, or new or updated test data. + * @param {NodeJS.ReadableStream | Buffer} [params.trainingData] - The training data CSV file to upload. The CSV file + * must have headers. The file must include a field that contains the text you want to classify and a field that + * contains the classification labels that you want to use to classify your data. If you want to specify multiple + * values in a single column, use a semicolon as the value separator. For a sample file, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-cm-doc-classifier). + * @param {NodeJS.ReadableStream | Buffer} [params.testData] - The CSV with test data to upload. The column values in + * the test file must be the same as the column values in the training data file. If no test data is provided, the + * training data is split into two separate groups of training and test data. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateDocumentClassifier( + params: DiscoveryV2.UpdateDocumentClassifierParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId', 'classifier']; + const _validParams = ['projectId', 'classifierId', 'classifier', 'trainingData', 'testData', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'classifier': _params.classifier, + 'training_data': { + data: _params.trainingData, + contentType: 'text/csv', + }, + 'test_data': { + data: _params.testData, + contentType: 'text/csv', + }, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'updateDocumentClassifier'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}', + method: 'POST', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete a document classifier. + * + * Deletes an existing document classifier from the specified project. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteDocumentClassifier( + params: DiscoveryV2.DeleteDocumentClassifierParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId']; + const _validParams = ['projectId', 'classifierId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteDocumentClassifier'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * documentClassifierModels + ************************/ + + /** + * List document classifier models. + * + * Get a list of the document classifier models in a project. Returns only the name and model ID of each document + * classifier model. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listDocumentClassifierModels( + params: DiscoveryV2.ListDocumentClassifierModelsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId']; + const _validParams = ['projectId', 'classifierId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'listDocumentClassifierModels'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}/models', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Create a document classifier model. + * + * Create a document classifier model by training a model that uses the data and classifier settings defined in the + * specified document classifier. + * + * **Note:** This method is supported on installed intances (IBM Cloud Pak for Data) or IBM Cloud-managed Premium or + * Enterprise plan instances. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {string} params.name - The name of the document classifier model. + * @param {string} [params.description] - A description of the document classifier model. + * @param {number} [params.learningRate] - A tuning parameter in an optimization algorithm that determines the step + * size at each iteration of the training process. It influences how much of any newly acquired information overrides + * the existing information, and therefore is said to represent the speed at which a machine learning model learns. + * The default value is `0.1`. + * @param {number[]} [params.l1RegularizationStrengths] - Avoids overfitting by shrinking the coefficient of less + * important features to zero, which removes some features altogether. You can specify many values for hyper-parameter + * optimization. The default value is `[0.000001]`. + * @param {number[]} [params.l2RegularizationStrengths] - A method you can apply to avoid overfitting your model on + * the training data. You can specify many values for hyper-parameter optimization. The default value is `[0.000001]`. + * @param {number} [params.trainingMaxSteps] - Maximum number of training steps to complete. This setting is useful if + * you need the training process to finish in a specific time frame to fit into an automated process. The default + * value is ten million. + * @param {number} [params.improvementRatio] - Stops the training run early if the improvement ratio is not met by the + * time the process reaches a certain point. The default value is `0.00001`. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createDocumentClassifierModel( + params: DiscoveryV2.CreateDocumentClassifierModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId', 'name']; + const _validParams = ['projectId', 'classifierId', 'name', 'description', 'learningRate', 'l1RegularizationStrengths', 'l2RegularizationStrengths', 'trainingMaxSteps', 'improvementRatio', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + 'learning_rate': _params.learningRate, + 'l1_regularization_strengths': _params.l1RegularizationStrengths, + 'l2_regularization_strengths': _params.l2RegularizationStrengths, + 'training_max_steps': _params.trainingMaxSteps, + 'improvement_ratio': _params.improvementRatio, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'createDocumentClassifierModel'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}/models', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get a document classifier model. + * + * Get details about a specific document classifier model. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {string} params.modelId - The Universally Unique Identifier (UUID) of the classifier model. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getDocumentClassifierModel( + params: DiscoveryV2.GetDocumentClassifierModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId', 'modelId']; + const _validParams = ['projectId', 'classifierId', 'modelId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'getDocumentClassifierModel'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}/models/{model_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update a document classifier model. + * + * Update the document classifier model name or description. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {string} params.modelId - The Universally Unique Identifier (UUID) of the classifier model. + * @param {string} [params.name] - A new name for the enrichment. + * @param {string} [params.description] - A new description for the enrichment. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateDocumentClassifierModel( + params: DiscoveryV2.UpdateDocumentClassifierModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId', 'modelId']; + const _validParams = ['projectId', 'classifierId', 'modelId', 'name', 'description', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'name': _params.name, + 'description': _params.description, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'updateDocumentClassifierModel'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}/models/{model_id}', + method: 'POST', + body, + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete a document classifier model. + * + * Deletes an existing document classifier model from the specified project. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.classifierId - The Universally Unique Identifier (UUID) of the classifier. + * @param {string} params.modelId - The Universally Unique Identifier (UUID) of the classifier model. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteDocumentClassifierModel( + params: DiscoveryV2.DeleteDocumentClassifierModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'classifierId', 'modelId']; + const _validParams = ['projectId', 'classifierId', 'modelId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'classifier_id': _params.classifierId, + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteDocumentClassifierModel'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/document_classifiers/{classifier_id}/models/{model_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * analyze + ************************/ + + /** + * Analyze a document. + * + * Process a document and return it for realtime use. Supports JSON files only. + * + * The file is not stored in the collection, but is processed according to the collection's configuration settings. To + * get results, enrichments must be applied to a field in the collection that also exists in the file that you want to + * analyze. For example, to analyze text in a `Quote` field, you must apply enrichments to the `Quote` field in the + * collection configuration. Then, when you analyze the file, the text in the `Quote` field is analyzed and results + * are written to a field named `enriched_Quote`. + * + * Submit a request against only one collection at a time. Remember, the documents in the collection are not + * significant. It is the enrichments that are defined for the collection that matter. If you submit requests to + * several collections, then several models are initiated at the same time, which can cause request failures. + * + * **Note:** This method is supported with Enterprise plan deployments and installed deployments only. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.projectId - The Universally Unique Identifier (UUID) of the project. This information can be + * found from the *Integrate and Deploy* page in Discovery. + * @param {string} params.collectionId - The Universally Unique Identifier (UUID) of the collection. + * @param {NodeJS.ReadableStream | Buffer} [params.file] - **Add a document**: The content of the document to ingest. + * For the supported file types and maximum supported file size limits when adding a document, see [the + * documentation](/docs/discovery-data?topic=discovery-data-collections#supportedfiletypes). + * + * **Analyze a document**: The content of the document to analyze but not ingest. Only the `application/json` content + * type is supported by the Analyze API. For maximum supported file size limits, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-analyzeapi#analyzeapi-limits). + * @param {string} [params.filename] - The filename for file. + * @param {string} [params.fileContentType] - The content type of file. + * @param {string} [params.metadata] - Add information about the file that you want to include in the response. + * + * The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB are rejected. + * + * Example: + * + * ``` + * { + * "filename": "favorites2.json", + * "file_type": "json" + * }. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public analyzeDocument( + params: DiscoveryV2.AnalyzeDocumentParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['projectId', 'collectionId']; + const _validParams = ['projectId', 'collectionId', 'file', 'filename', 'fileContentType', 'metadata', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'file': { + data: _params.file, + filename: _params.filename, + contentType: _params.fileContentType, + }, + 'metadata': _params.metadata, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'project_id': _params.projectId, + 'collection_id': _params.collectionId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'analyzeDocument'); + + const parameters = { + options: { + url: '/v2/projects/{project_id}/collections/{collection_id}/analyze', + method: 'POST', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * userData + ************************/ + + /** + * Delete labeled data. + * + * Deletes all data associated with a specified customer ID. The method has no effect if no data is associated with + * the customer ID. + * + * You associate a customer ID with data by passing the **X-Watson-Metadata** header with a request that passes data. + * For more information about personal data and customer IDs, see [Information + * security](/docs/discovery-data?topic=discovery-data-information-security#information-security). + * + * **Note:** This method is only supported on IBM Cloud instances of Discovery. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.customerId - The customer ID for which all data is to be deleted. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteUserData( + params: DiscoveryV2.DeleteUserDataParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['customerId']; + const _validParams = ['customerId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + 'customer_id': _params.customerId, + }; + + const sdkHeaders = getSdkHeaders(DiscoveryV2.DEFAULT_SERVICE_NAME, 'v2', 'deleteUserData'); + + const parameters = { + options: { + url: '/v2/user_data', + method: 'DELETE', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } +} + +/************************* + * interfaces + ************************/ + +namespace DiscoveryV2 { + /** Options for the `DiscoveryV2` constructor. */ + export interface Options extends UserOptions { + /** Release date of the version of the API you want to use. Specify dates in YYYY-MM-DD format. The current + * version is `2023-03-31`. + */ + version: string; + } + + /** An operation response. */ + export interface Response { + result: T; + status: number; + statusText: string; + headers: IncomingHttpHeaders; + } + + /** The callback for a service request. */ + export type Callback = (error: any, response?: Response) => void; + + /** The body of a service request that returns no response data. */ + export interface EmptyObject {} + + /** A standard JS object, defined to avoid the limitations of `Object` and `object` */ + export interface JsonObject { + [key: string]: any; + } + + /************************* + * request interfaces + ************************/ + + interface DefaultParams { + headers?: OutgoingHttpHeaders; + signal?: AbortSignal; + } + + /** Parameters for the `listProjects` operation. */ + export interface ListProjectsParams extends DefaultParams { + } + + /** Parameters for the `createProject` operation. */ + export interface CreateProjectParams extends DefaultParams { + /** The human readable name of this project. */ + name: string; + /** The type of project. + * + * The `content_intelligence` type is a *Document Retrieval for Contracts* project and the `other` type is a + * *Custom* project. + * + * The `content_mining` and `content_intelligence` types are available with Premium plan managed deployments and + * installed deployments only. + * + * The Intelligent Document Processing (IDP) project type is available from IBM Cloud-managed instances only. + */ + type: CreateProjectConstants.Type | string; + /** Default query parameters for this project. */ + defaultQueryParameters?: DefaultQueryParams; + } + + /** Constants for the `createProject` operation. */ + export namespace CreateProjectConstants { + /** The type of project. The `content_intelligence` type is a *Document Retrieval for Contracts* project and the `other` type is a *Custom* project. The `content_mining` and `content_intelligence` types are available with Premium plan managed deployments and installed deployments only. The Intelligent Document Processing (IDP) project type is available from IBM Cloud-managed instances only. */ + export enum Type { + INTELLIGENT_DOCUMENT_PROCESSING = 'intelligent_document_processing', + DOCUMENT_RETRIEVAL = 'document_retrieval', + CONVERSATIONAL_SEARCH = 'conversational_search', + CONTENT_INTELLIGENCE = 'content_intelligence', + CONTENT_MINING = 'content_mining', + OTHER = 'other', + } + } + + /** Parameters for the `getProject` operation. */ + export interface GetProjectParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `updateProject` operation. */ + export interface UpdateProjectParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The new name to give this project. */ + name?: string; + } + + /** Parameters for the `deleteProject` operation. */ + export interface DeleteProjectParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `listFields` operation. */ + export interface ListFieldsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** Comma separated list of the collection IDs. If this parameter is not specified, all collections in the + * project are used. + */ + collectionIds?: string[]; + } + + /** Parameters for the `listCollections` operation. */ + export interface ListCollectionsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `createCollection` operation. */ + export interface CreateCollectionParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The name of the collection. */ + name: string; + /** A description of the collection. */ + description?: string; + /** The language of the collection. For a list of supported languages, see the [product + * documentation](/docs/discovery-data?topic=discovery-data-language-support). + */ + language?: string; + /** If set to `true`, optical character recognition (OCR) is enabled. For more information, see [Optical + * character recognition](/docs/discovery-data?topic=discovery-data-collections#ocr). + */ + ocrEnabled?: boolean; + /** An array of enrichments that are applied to this collection. To get a list of enrichments that are available + * for a project, use the [List enrichments](#listenrichments) method. + * + * If no enrichments are specified when the collection is created, the default enrichments for the project type are + * applied. For more information about project default settings, see the [product + * documentation](/docs/discovery-data?topic=discovery-data-project-defaults). + */ + enrichments?: CollectionEnrichment[]; + } + + /** Parameters for the `getCollection` operation. */ + export interface GetCollectionParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + } + + /** Parameters for the `updateCollection` operation. */ + export interface UpdateCollectionParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** The new name of the collection. */ + name?: string; + /** The new description of the collection. */ + description?: string; + /** If set to `true`, optical character recognition (OCR) is enabled. For more information, see [Optical + * character recognition](/docs/discovery-data?topic=discovery-data-collections#ocr). + */ + ocrEnabled?: boolean; + /** An array of enrichments that are applied to this collection. */ + enrichments?: CollectionEnrichment[]; + } + + /** Parameters for the `deleteCollection` operation. */ + export interface DeleteCollectionParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + } + + /** Parameters for the `listDocuments` operation. */ + export interface ListDocumentsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** The maximum number of documents to return. Up to 1,000 documents are returned by default. The maximum number + * allowed is 10,000. + */ + count?: number; + /** Filters the documents to include only documents with the specified ingestion status. The options include: + * + * * `available`: Ingestion is finished and the document is indexed. + * + * * `failed`: Ingestion is finished, but the document is not indexed because of an error. + * + * * `pending`: The document is uploaded, but the ingestion process is not started. + * + * * `processing`: Ingestion is in progress. + * + * You can specify one status value or add a comma-separated list of more than one status value. For example, + * `available,failed`. + */ + status?: string; + /** If set to `true`, only documents that have notices, meaning documents for which warnings or errors were + * generated during the ingestion, are returned. If set to `false`, only documents that don't have notices are + * returned. If unspecified, no filter based on notices is applied. + * + * Notice details are not available in the result, but you can use the [Query collection + * notices](#querycollectionnotices) method to find details by adding the parameter + * `query=notices.document_id:{document-id}`. + */ + hasNotices?: boolean; + /** If set to `true`, only parent documents, meaning documents that were split during the ingestion process and + * resulted in two or more child documents, are returned. If set to `false`, only child documents are returned. If + * unspecified, no filter based on the parent or child relationship is applied. + * + * CSV files, for example, are split into separate documents per line and JSON files are split into separate + * documents per object. + */ + isParent?: boolean; + /** Filters the documents to include only child documents that were generated when the specified parent document + * was processed. + */ + parentDocumentId?: string; + /** Filters the documents to include only documents with the specified SHA-256 hash. Format the hash as a + * hexadecimal string. + */ + sha256?: string; + } + + /** Parameters for the `addDocument` operation. */ + export interface AddDocumentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** **Add a document**: The content of the document to ingest. For the supported file types and maximum + * supported file size limits when adding a document, see [the + * documentation](/docs/discovery-data?topic=discovery-data-collections#supportedfiletypes). + * + * **Analyze a document**: The content of the document to analyze but not ingest. Only the `application/json` + * content type is supported by the Analyze API. For maximum supported file size limits, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-analyzeapi#analyzeapi-limits). + */ + file?: NodeJS.ReadableStream | Buffer; + /** The filename for file. */ + filename?: string; + /** The content type of file. */ + fileContentType?: AddDocumentConstants.FileContentType | string; + /** Add information about the file that you want to include in the response. + * + * The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB are rejected. + * + * Example: + * + * ``` + * { + * "filename": "favorites2.json", + * "file_type": "json" + * }. + */ + metadata?: string; + /** When `true`, the uploaded document is added to the collection even if the data for that collection is shared + * with other collections. + */ + xWatsonDiscoveryForce?: boolean; + } + + /** Constants for the `addDocument` operation. */ + export namespace AddDocumentConstants { + /** The content type of file. */ + export enum FileContentType { + APPLICATION_JSON = 'application/json', + APPLICATION_MSWORD = 'application/msword', + APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + APPLICATION_PDF = 'application/pdf', + TEXT_HTML = 'text/html', + APPLICATION_XHTML_XML = 'application/xhtml+xml', + } + } + + /** Parameters for the `getDocument` operation. */ + export interface GetDocumentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** The ID of the document. */ + documentId: string; + } + + /** Parameters for the `updateDocument` operation. */ + export interface UpdateDocumentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** The ID of the document. */ + documentId: string; + /** **Add a document**: The content of the document to ingest. For the supported file types and maximum + * supported file size limits when adding a document, see [the + * documentation](/docs/discovery-data?topic=discovery-data-collections#supportedfiletypes). + * + * **Analyze a document**: The content of the document to analyze but not ingest. Only the `application/json` + * content type is supported by the Analyze API. For maximum supported file size limits, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-analyzeapi#analyzeapi-limits). + */ + file?: NodeJS.ReadableStream | Buffer; + /** The filename for file. */ + filename?: string; + /** The content type of file. */ + fileContentType?: UpdateDocumentConstants.FileContentType | string; + /** Add information about the file that you want to include in the response. + * + * The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB are rejected. + * + * Example: + * + * ``` + * { + * "filename": "favorites2.json", + * "file_type": "json" + * }. + */ + metadata?: string; + /** When `true`, the uploaded document is added to the collection even if the data for that collection is shared + * with other collections. + */ + xWatsonDiscoveryForce?: boolean; + } + + /** Constants for the `updateDocument` operation. */ + export namespace UpdateDocumentConstants { + /** The content type of file. */ + export enum FileContentType { + APPLICATION_JSON = 'application/json', + APPLICATION_MSWORD = 'application/msword', + APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + APPLICATION_PDF = 'application/pdf', + TEXT_HTML = 'text/html', + APPLICATION_XHTML_XML = 'application/xhtml+xml', + } + } + + /** Parameters for the `deleteDocument` operation. */ + export interface DeleteDocumentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** The ID of the document. */ + documentId: string; + /** When `true`, the uploaded document is added to the collection even if the data for that collection is shared + * with other collections. + */ + xWatsonDiscoveryForce?: boolean; + } + + /** Parameters for the `query` operation. */ + export interface QueryParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** A comma-separated list of collection IDs to be queried against. */ + collectionIds?: string[]; + /** Searches for documents that match the Discovery Query Language criteria that is specified as input. Filter + * calls are cached and are faster than query calls because the results are not ordered by relevance. When used + * with the **aggregation**, **query**, or **natural_language_query** parameters, the **filter** parameter runs + * first. This parameter is useful for limiting results to those that contain specific metadata values. + */ + filter?: string; + /** A query search that is written in the Discovery Query Language and returns all matching documents in your + * data set with full enrichments and full text, and with the most relevant documents listed first. Use a query + * search when you want to find the most relevant search results. You can use this parameter or the + * **natural_language_query** parameter to specify the query input, but not both. + */ + query?: string; + /** A natural language query that returns relevant documents by using training data and natural language + * understanding. You can use this parameter or the **query** parameter to specify the query input, but not both. + * To filter the results based on criteria you specify, include the **filter** parameter in the request. + */ + naturalLanguageQuery?: string; + /** An aggregation search that returns an exact answer by combining query search with filters. Useful for + * applications to build lists, tables, and time series. For more information about the supported types of + * aggregations, see the [Discovery documentation](/docs/discovery-data?topic=discovery-data-query-aggregations). + */ + aggregation?: string; + /** Number of results to return. */ + count?: number; + /** A list of the fields in the document hierarchy to return. You can specify both root-level (`text`) and + * nested (`extracted_metadata.filename`) fields. If this parameter is an empty list, then all fields are returned. + */ + _return?: string[]; + /** The number of query results to skip at the beginning. Consider that the `count` is set to 10 (the default + * value) and the total number of results that are returned is 100. In this case, the following examples show the + * returned results for different `offset` values: + * + * * If `offset` is set to 95, it returns the last 5 results. + * + * * If `offset` is set to 10, it returns the second batch of 10 results. + * + * * If `offset` is set to 100 or more, it returns empty results. + */ + offset?: number; + /** A comma-separated list of fields in the document to sort on. You can optionally specify a sort direction by + * prefixing the field with `-` for descending or `+` for ascending. Ascending is the default sort direction if no + * prefix is specified. + */ + sort?: string; + /** When `true`, a highlight field is returned for each result that contains fields that match the query. The + * matching query terms are emphasized with surrounding `` tags. This parameter is ignored if + * **passages.enabled** and **passages.per_document** are `true`, in which case passages are returned for each + * document instead of highlights. + */ + highlight?: boolean; + /** When `true` and the **natural_language_query** parameter is used, the **natural_language_query** parameter + * is spell checked. The most likely correction is returned in the **suggested_query** field of the response (if + * one exists). + */ + spellingSuggestions?: boolean; + /** Configuration for table retrieval. */ + tableResults?: QueryLargeTableResults; + /** Configuration for suggested refinements. + * + * **Note**: The **suggested_refinements** parameter that identified dynamic facets from the data is deprecated. + */ + suggestedRefinements?: QueryLargeSuggestedRefinements; + /** Configuration for passage retrieval. */ + passages?: QueryLargePassages; + /** Finds results from documents that are similar to documents of interest. Use this parameter to add a *More + * like these* function to your search. You can include this parameter with or without a **query**, **filter** or + * **natural_language_query** parameter. + */ + similar?: QueryLargeSimilar; + } + + /** Parameters for the `getAutocompletion` operation. */ + export interface GetAutocompletionParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The prefix to use for autocompletion. For example, the prefix `Ho` could autocomplete to `hot`, `housing`, + * or `how`. + */ + prefix: string; + /** Comma separated list of the collection IDs. If this parameter is not specified, all collections in the + * project are used. + */ + collectionIds?: string[]; + /** The field in the result documents that autocompletion suggestions are identified from. */ + field?: string; + /** The number of autocompletion suggestions to return. */ + count?: number; + } + + /** Parameters for the `queryCollectionNotices` operation. */ + export interface QueryCollectionNoticesParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** Searches for documents that match the Discovery Query Language criteria that is specified as input. Filter + * calls are cached and are faster than query calls because the results are not ordered by relevance. When used + * with the `aggregation`, `query`, or `natural_language_query` parameters, the `filter` parameter runs first. This + * parameter is useful for limiting results to those that contain specific metadata values. + */ + filter?: string; + /** A query search that is written in the Discovery Query Language and returns all matching documents in your + * data set with full enrichments and full text, and with the most relevant documents listed first. You can use + * this parameter or the **natural_language_query** parameter to specify the query input, but not both. + */ + query?: string; + /** A natural language query that returns relevant documents by using natural language understanding. You can + * use this parameter or the **query** parameter to specify the query input, but not both. To filter the results + * based on criteria you specify, include the **filter** parameter in the request. + */ + naturalLanguageQuery?: string; + /** Number of results to return. The maximum for the **count** and **offset** values together in any one query + * is **10,000**. + */ + count?: number; + /** The number of query results to skip at the beginning. For example, if the total number of results that are + * returned is 10 and the offset is 8, it returns the last two results. The maximum for the **count** and + * **offset** values together in any one query is **10000**. + */ + offset?: number; + } + + /** Parameters for the `queryNotices` operation. */ + export interface QueryNoticesParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** Searches for documents that match the Discovery Query Language criteria that is specified as input. Filter + * calls are cached and are faster than query calls because the results are not ordered by relevance. When used + * with the `aggregation`, `query`, or `natural_language_query` parameters, the `filter` parameter runs first. This + * parameter is useful for limiting results to those that contain specific metadata values. + */ + filter?: string; + /** A query search that is written in the Discovery Query Language and returns all matching documents in your + * data set with full enrichments and full text, and with the most relevant documents listed first. You can use + * this parameter or the **natural_language_query** parameter to specify the query input, but not both. + */ + query?: string; + /** A natural language query that returns relevant documents by using natural language understanding. You can + * use this parameter or the **query** parameter to specify the query input, but not both. To filter the results + * based on criteria you specify, include the **filter** parameter in the request. + */ + naturalLanguageQuery?: string; + /** Number of results to return. The maximum for the **count** and **offset** values together in any one query + * is **10,000**. + */ + count?: number; + /** The number of query results to skip at the beginning. For example, if the total number of results that are + * returned is 10 and the offset is 8, it returns the last two results. The maximum for the **count** and + * **offset** values together in any one query is **10000**. + */ + offset?: number; + } + + /** Parameters for the `getStopwordList` operation. */ + export interface GetStopwordListParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + } + + /** Parameters for the `createStopwordList` operation. */ + export interface CreateStopwordListParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** List of stop words. */ + stopwords?: string[]; + } + + /** Parameters for the `deleteStopwordList` operation. */ + export interface DeleteStopwordListParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + } + + /** Parameters for the `listExpansions` operation. */ + export interface ListExpansionsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + } + + /** Parameters for the `createExpansions` operation. */ + export interface CreateExpansionsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** An array of query expansion definitions. + * + * Each object in the **expansions** array represents a term or set of terms that will be expanded into other + * terms. Each expansion object can be configured as `bidirectional` or `unidirectional`. + * + * * **Bidirectional**: Each entry in the `expanded_terms` list expands to include all expanded terms. For example, + * a query for `ibm` expands to `ibm OR international business machines OR big blue`. + * + * * **Unidirectional**: The terms in `input_terms` in the query are replaced by the terms in `expanded_terms`. For + * example, a query for the often misused term `on premise` is converted to `on premises OR on-premises` and does + * not contain the original term. If you want an input term to be included in the query, then repeat the input term + * in the expanded terms list. + */ + expansions: Expansion[]; + } + + /** Parameters for the `deleteExpansions` operation. */ + export interface DeleteExpansionsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + } + + /** Parameters for the `getComponentSettings` operation. */ + export interface GetComponentSettingsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `listTrainingQueries` operation. */ + export interface ListTrainingQueriesParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `deleteTrainingQueries` operation. */ + export interface DeleteTrainingQueriesParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `createTrainingQuery` operation. */ + export interface CreateTrainingQueryParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The natural text query that is used as the training query. */ + naturalLanguageQuery: string; + /** Array of training examples. */ + examples: TrainingExample[]; + /** The filter used on the collection before the **natural_language_query** is applied. Only specify a filter if + * the documents that you consider to be most relevant are not included in the top 100 results when you submit test + * queries. If you specify a filter during training, apply the same filter to queries that are submitted at runtime + * for optimal ranking results. + */ + filter?: string; + } + + /** Parameters for the `getTrainingQuery` operation. */ + export interface GetTrainingQueryParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The ID of the query used for training. */ + queryId: string; + } + + /** Parameters for the `updateTrainingQuery` operation. */ + export interface UpdateTrainingQueryParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The ID of the query used for training. */ + queryId: string; + /** The natural text query that is used as the training query. */ + naturalLanguageQuery: string; + /** Array of training examples. */ + examples: TrainingExample[]; + /** The filter used on the collection before the **natural_language_query** is applied. Only specify a filter if + * the documents that you consider to be most relevant are not included in the top 100 results when you submit test + * queries. If you specify a filter during training, apply the same filter to queries that are submitted at runtime + * for optimal ranking results. + */ + filter?: string; + } + + /** Parameters for the `deleteTrainingQuery` operation. */ + export interface DeleteTrainingQueryParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The ID of the query used for training. */ + queryId: string; + } + + /** Parameters for the `listEnrichments` operation. */ + export interface ListEnrichmentsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `createEnrichment` operation. */ + export interface CreateEnrichmentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** Information about a specific enrichment. */ + enrichment: CreateEnrichment; + /** The enrichment file to upload. Expected file types per enrichment are as follows: + * + * * CSV for `dictionary` and `sentence_classifier` (the training data CSV file to upload). + * + * * PEAR for `uima_annotator` and `rule_based` (Explorer) + * + * * ZIP for `watson_knowledge_studio_model` and `rule_based` (Studio Advanced Rule Editor). + */ + file?: NodeJS.ReadableStream | Buffer; + } + + /** Parameters for the `getEnrichment` operation. */ + export interface GetEnrichmentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the enrichment. */ + enrichmentId: string; + } + + /** Parameters for the `updateEnrichment` operation. */ + export interface UpdateEnrichmentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the enrichment. */ + enrichmentId: string; + /** A new name for the enrichment. */ + name: string; + /** A new description for the enrichment. */ + description?: string; + } + + /** Parameters for the `deleteEnrichment` operation. */ + export interface DeleteEnrichmentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the enrichment. */ + enrichmentId: string; + } + + /** Parameters for the `listBatches` operation. */ + export interface ListBatchesParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + } + + /** Parameters for the `pullBatches` operation. */ + export interface PullBatchesParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** The Universally Unique Identifier (UUID) of the document batch that is being requested from Discovery. */ + batchId: string; + } + + /** Parameters for the `pushBatches` operation. */ + export interface PushBatchesParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** The Universally Unique Identifier (UUID) of the document batch that is being requested from Discovery. */ + batchId: string; + /** A compressed newline-delimited JSON (NDJSON), which is a JSON file with one row of data per line. For + * example, `{batch_id}.ndjson.gz`. For more information, see [Binary attachment in the push batches + * method](/docs/discovery-data?topic=discovery-data-external-enrichment#binary-attachment-push-batches). + * + * There is no limitation on the name of the file because Discovery does not use the name for processing. The list + * of features in the document is specified in the `features` object. + */ + file?: NodeJS.ReadableStream | Buffer; + /** The filename for file. */ + filename?: string; + } + + /** Parameters for the `listDocumentClassifiers` operation. */ + export interface ListDocumentClassifiersParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + } + + /** Parameters for the `createDocumentClassifier` operation. */ + export interface CreateDocumentClassifierParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The training data CSV file to upload. The CSV file must have headers. The file must include a field that + * contains the text you want to classify and a field that contains the classification labels that you want to use + * to classify your data. If you want to specify multiple values in a single field, use a semicolon as the value + * separator. For a sample file, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-cm-doc-classifier). + */ + trainingData: NodeJS.ReadableStream | Buffer; + /** An object that manages the settings and data that is required to train a document classification model. */ + classifier: CreateDocumentClassifier; + /** The CSV with test data to upload. The column values in the test file must be the same as the column values + * in the training data file. If no test data is provided, the training data is split into two separate groups of + * training and test data. + */ + testData?: NodeJS.ReadableStream | Buffer; + } + + /** Parameters for the `getDocumentClassifier` operation. */ + export interface GetDocumentClassifierParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + } + + /** Parameters for the `updateDocumentClassifier` operation. */ + export interface UpdateDocumentClassifierParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + /** An object that contains a new name or description for a document classifier, updated training data, or new + * or updated test data. + */ + classifier: UpdateDocumentClassifier; + /** The training data CSV file to upload. The CSV file must have headers. The file must include a field that + * contains the text you want to classify and a field that contains the classification labels that you want to use + * to classify your data. If you want to specify multiple values in a single column, use a semicolon as the value + * separator. For a sample file, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-cm-doc-classifier). + */ + trainingData?: NodeJS.ReadableStream | Buffer; + /** The CSV with test data to upload. The column values in the test file must be the same as the column values + * in the training data file. If no test data is provided, the training data is split into two separate groups of + * training and test data. + */ + testData?: NodeJS.ReadableStream | Buffer; + } + + /** Parameters for the `deleteDocumentClassifier` operation. */ + export interface DeleteDocumentClassifierParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + } + + /** Parameters for the `listDocumentClassifierModels` operation. */ + export interface ListDocumentClassifierModelsParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + } + + /** Parameters for the `createDocumentClassifierModel` operation. */ + export interface CreateDocumentClassifierModelParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + /** The name of the document classifier model. */ + name: string; + /** A description of the document classifier model. */ + description?: string; + /** A tuning parameter in an optimization algorithm that determines the step size at each iteration of the + * training process. It influences how much of any newly acquired information overrides the existing information, + * and therefore is said to represent the speed at which a machine learning model learns. The default value is + * `0.1`. + */ + learningRate?: number; + /** Avoids overfitting by shrinking the coefficient of less important features to zero, which removes some + * features altogether. You can specify many values for hyper-parameter optimization. The default value is + * `[0.000001]`. + */ + l1RegularizationStrengths?: number[]; + /** A method you can apply to avoid overfitting your model on the training data. You can specify many values for + * hyper-parameter optimization. The default value is `[0.000001]`. + */ + l2RegularizationStrengths?: number[]; + /** Maximum number of training steps to complete. This setting is useful if you need the training process to + * finish in a specific time frame to fit into an automated process. The default value is ten million. + */ + trainingMaxSteps?: number; + /** Stops the training run early if the improvement ratio is not met by the time the process reaches a certain + * point. The default value is `0.00001`. + */ + improvementRatio?: number; + } + + /** Parameters for the `getDocumentClassifierModel` operation. */ + export interface GetDocumentClassifierModelParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + /** The Universally Unique Identifier (UUID) of the classifier model. */ + modelId: string; + } + + /** Parameters for the `updateDocumentClassifierModel` operation. */ + export interface UpdateDocumentClassifierModelParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + /** The Universally Unique Identifier (UUID) of the classifier model. */ + modelId: string; + /** A new name for the enrichment. */ + name?: string; + /** A new description for the enrichment. */ + description?: string; + } + + /** Parameters for the `deleteDocumentClassifierModel` operation. */ + export interface DeleteDocumentClassifierModelParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the classifier. */ + classifierId: string; + /** The Universally Unique Identifier (UUID) of the classifier model. */ + modelId: string; + } + + /** Parameters for the `analyzeDocument` operation. */ + export interface AnalyzeDocumentParams extends DefaultParams { + /** The Universally Unique Identifier (UUID) of the project. This information can be found from the *Integrate + * and Deploy* page in Discovery. + */ + projectId: string; + /** The Universally Unique Identifier (UUID) of the collection. */ + collectionId: string; + /** **Add a document**: The content of the document to ingest. For the supported file types and maximum + * supported file size limits when adding a document, see [the + * documentation](/docs/discovery-data?topic=discovery-data-collections#supportedfiletypes). + * + * **Analyze a document**: The content of the document to analyze but not ingest. Only the `application/json` + * content type is supported by the Analyze API. For maximum supported file size limits, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-analyzeapi#analyzeapi-limits). + */ + file?: NodeJS.ReadableStream | Buffer; + /** The filename for file. */ + filename?: string; + /** The content type of file. */ + fileContentType?: AnalyzeDocumentConstants.FileContentType | string; + /** Add information about the file that you want to include in the response. + * + * The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB are rejected. + * + * Example: + * + * ``` + * { + * "filename": "favorites2.json", + * "file_type": "json" + * }. + */ + metadata?: string; + } + + /** Constants for the `analyzeDocument` operation. */ + export namespace AnalyzeDocumentConstants { + /** The content type of file. */ + export enum FileContentType { + APPLICATION_JSON = 'application/json', + APPLICATION_MSWORD = 'application/msword', + APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + APPLICATION_PDF = 'application/pdf', + TEXT_HTML = 'text/html', + APPLICATION_XHTML_XML = 'application/xhtml+xml', + } + } + + /** Parameters for the `deleteUserData` operation. */ + export interface DeleteUserDataParams extends DefaultParams { + /** The customer ID for which all data is to be deleted. */ + customerId: string; + } + + /************************* + * model interfaces + ************************/ + + /** + * An object that contains the converted document and any identified enrichments. Root-level fields from the original + * file are returned also. + */ + export interface AnalyzedDocument { + /** Array of notices that are triggered when the files are processed. */ + notices?: Notice[]; + /** Result of the document analysis. */ + result?: AnalyzedResult; + } + + /** + * Result of the document analysis. + * + * This type supports additional properties of type any. The remaining key-value pairs. + */ + export interface AnalyzedResult { + /** Metadata that was specified with the request. */ + metadata?: JsonObject; + + /** + * AnalyzedResult accepts additional properties of type any. The remaining key-value pairs. + */ + [propName: string]: any; + } + + /** + * A batch is a set of documents that are ready for enrichment by an external application. After you apply a webhook + * enrichment to a collection, and then process or upload documents to the collection, Discovery creates a batch with + * a unique **batch_id**. + */ + export interface BatchDetails { + /** The Universally Unique Identifier (UUID) for a batch of documents. */ + batch_id?: string; + /** The date and time (RFC3339) that the batch was created. */ + created?: string; + /** The Universally Unique Identifier (UUID) for the external enrichment. */ + enrichment_id?: string; + } + + /** + * An object with details for creating federated document classifier models. + */ + export interface ClassifierFederatedModel { + /** Name of the field that contains the values from which multiple classifier models are defined. For example, + * you can specify a field that lists product lines to create a separate model per product line. + */ + field: string; + } + + /** + * An object that contains information about a trained document classifier model. + */ + export interface ClassifierModelEvaluation { + /** A micro-average aggregates the contributions of all classes to compute the average metric. Classes refers to + * the classification labels that are specified in the **answer_field**. + */ + micro_average: ModelEvaluationMicroAverage; + /** A macro-average computes metric independently for each class and then takes the average. Class refers to the + * classification label that is specified in the **answer_field**. + */ + macro_average: ModelEvaluationMacroAverage; + /** An array of evaluation metrics, one set of metrics for each class, where class refers to the classification + * label that is specified in the **answer_field**. + */ + per_class: PerClassModelEvaluation[]; + } + + /** + * A collection for storing documents. + */ + export interface Collection { + /** The Universally Unique Identifier (UUID) of the collection. */ + collection_id?: string; + /** The name of the collection. */ + name?: string; + } + + /** + * A collection for storing documents. + */ + export interface CollectionDetails { + /** The Universally Unique Identifier (UUID) of the collection. */ + collection_id?: string; + /** The name of the collection. */ + name: string; + /** A description of the collection. */ + description?: string; + /** The date that the collection was created. */ + created?: string; + /** The language of the collection. For a list of supported languages, see the [product + * documentation](/docs/discovery-data?topic=discovery-data-language-support). + */ + language?: string; + /** If set to `true`, optical character recognition (OCR) is enabled. For more information, see [Optical + * character recognition](/docs/discovery-data?topic=discovery-data-collections#ocr). + */ + ocr_enabled?: boolean; + /** An array of enrichments that are applied to this collection. To get a list of enrichments that are available + * for a project, use the [List enrichments](#listenrichments) method. + * + * If no enrichments are specified when the collection is created, the default enrichments for the project type are + * applied. For more information about project default settings, see the [product + * documentation](/docs/discovery-data?topic=discovery-data-project-defaults). + */ + enrichments?: CollectionEnrichment[]; + /** An object that describes the Smart Document Understanding model for a collection. */ + smart_document_understanding?: CollectionDetailsSmartDocumentUnderstanding; + } + + /** + * An object that describes the Smart Document Understanding model for a collection. + */ + export interface CollectionDetailsSmartDocumentUnderstanding { + /** When `true`, smart document understanding conversion is enabled for the collection. */ + enabled?: boolean; + /** Specifies the type of Smart Document Understanding (SDU) model that is enabled for the collection. The + * following types of models are supported: + * + * * `custom`: A user-trained model is applied. + * + * * `pre_trained`: A pretrained model is applied. This type of model is applied automatically to *Document + * Retrieval for Contracts* projects. + * + * * `text_extraction`: An SDU model that extracts text and metadata from the content. This model is enabled in + * collections by default regardless of the types of documents in the collection (as long as the service plan + * supports SDU models). + * + * You can apply user-trained or pretrained models to collections from the *Identify fields* page of the product + * user interface. For more information, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-configuring-fields). + */ + model?: CollectionDetailsSmartDocumentUnderstanding.Constants.Model | string; + } + export namespace CollectionDetailsSmartDocumentUnderstanding { + export namespace Constants { + /** Specifies the type of Smart Document Understanding (SDU) model that is enabled for the collection. The following types of models are supported: * `custom`: A user-trained model is applied. * `pre_trained`: A pretrained model is applied. This type of model is applied automatically to *Document Retrieval for Contracts* projects. * `text_extraction`: An SDU model that extracts text and metadata from the content. This model is enabled in collections by default regardless of the types of documents in the collection (as long as the service plan supports SDU models). You can apply user-trained or pretrained models to collections from the *Identify fields* page of the product user interface. For more information, see [the product documentation](/docs/discovery-data?topic=discovery-data-configuring-fields). */ + export enum Model { + CUSTOM = 'custom', + PRE_TRAINED = 'pre_trained', + TEXT_EXTRACTION = 'text_extraction', + } + } + } + + /** + * An object describing an enrichment for a collection. + */ + export interface CollectionEnrichment { + /** The unique identifier of this enrichment. For more information about how to determine the ID of an + * enrichment, see [the product + * documentation](/docs/discovery-data?topic=discovery-data-manage-enrichments#enrichments-ids). + */ + enrichment_id?: string; + /** An array of field names that the enrichment is applied to. + * + * If you apply an enrichment to a field from a JSON file, the data is converted to an array automatically, even if + * the field contains a single value. + */ + fields?: string[]; + } + + /** + * An object that contains an array of autocompletion suggestions. + */ + export interface Completions { + /** Array of autocomplete suggestion based on the provided prefix. */ + completions?: string[]; + } + + /** + * Display settings for aggregations. + */ + export interface ComponentSettingsAggregation { + /** Identifier used to map aggregation settings to aggregation configuration. */ + name?: string; + /** User-friendly alias for the aggregation. */ + label?: string; + /** Whether users is allowed to select more than one of the aggregation terms. */ + multiple_selections_allowed?: boolean; + /** Type of visualization to use when rendering the aggregation. */ + visualization_type?: ComponentSettingsAggregation.Constants.VisualizationType | string; + } + export namespace ComponentSettingsAggregation { + export namespace Constants { + /** Type of visualization to use when rendering the aggregation. */ + export enum VisualizationType { + AUTO = 'auto', + FACET_TABLE = 'facet_table', + WORD_CLOUD = 'word_cloud', + MAP = 'map', + } + } + } + + /** + * Fields shown in the results section of the UI. + */ + export interface ComponentSettingsFieldsShown { + /** Body label. */ + body?: ComponentSettingsFieldsShownBody; + /** Title label. */ + title?: ComponentSettingsFieldsShownTitle; + } + + /** + * Body label. + */ + export interface ComponentSettingsFieldsShownBody { + /** Use the whole passage as the body. */ + use_passage?: boolean; + /** Use a specific field as the title. */ + field?: string; + } + + /** + * Title label. + */ + export interface ComponentSettingsFieldsShownTitle { + /** Use a specific field as the title. */ + field?: string; + } + + /** + * The default component settings for this project. + */ + export interface ComponentSettingsResponse { + /** Fields shown in the results section of the UI. */ + fields_shown?: ComponentSettingsFieldsShown; + /** Whether or not autocomplete is enabled. */ + autocomplete?: boolean; + /** Whether or not structured search is enabled. */ + structured_search?: boolean; + /** Number or results shown per page. */ + results_per_page?: number; + /** a list of component setting aggregations. */ + aggregations?: ComponentSettingsAggregation[]; + } + + /** + * An object that manages the settings and data that is required to train a document classification model. + */ + export interface CreateDocumentClassifier { + /** A human-readable name of the document classifier. */ + name: string; + /** A description of the document classifier. */ + description?: string; + /** The language of the training data that is associated with the document classifier. Language is specified by + * using the ISO 639-1 language code, such as `en` for English or `ja` for Japanese. + */ + language: string; + /** The name of the field from the training and test data that contains the classification labels. */ + answer_field: string; + /** An array of enrichments to apply to the data that is used to train and test the document classifier. The + * output from the enrichments is used as features by the classifier to classify the document content both during + * training and at run time. + */ + enrichments?: DocumentClassifierEnrichment[]; + /** An object with details for creating federated document classifier models. */ + federated_classification?: ClassifierFederatedModel; + } + + /** + * Information about a specific enrichment. + */ + export interface CreateEnrichment { + /** The human readable name for this enrichment. */ + name?: string; + /** The description of this enrichment. */ + description?: string; + /** The type of this enrichment. The following types are supported: + * + * * `classifier`: Creates a document classifier enrichment from a document classifier model that you create by + * using the [Document classifier API](/apidocs/discovery-data#createdocumentclassifier). **Note**: A text + * classifier enrichment can be created only from the product user interface. + * + * * `dictionary`: Creates a custom dictionary enrichment that you define in a CSV file. + * + * * `regular_expression`: Creates a custom regular expression enrichment from regex syntax that you specify in the + * request. + * + * * `rule_based`: Creates an enrichment from an advanced rules model that is created and exported as a ZIP file + * from Watson Knowledge Studio. + * + * * `uima_annotator`: Creates an enrichment from a custom UIMA text analysis model that is defined in a PEAR file + * created in one of the following ways: + * + * * Watson Explorer Content Analytics Studio. **Note**: Supported in IBM Cloud Pak for Data instances only. + * + * * Rule-based model that is created in Watson Knowledge Studio. + * + * * `watson_knowledge_studio_model`: Creates an enrichment from a Watson Knowledge Studio machine learning model + * that is defined in a ZIP file. + * + * * `webhook`: Connects to an external enrichment application by using a webhook. + * + * * `sentence_classifier`: Use sentence classifier to classify sentences in your documents. This feature is + * available in IBM Cloud-managed instances only. The sentence classifier feature is beta functionality. Beta + * features are not supported by the SDKs. + */ + type?: CreateEnrichment.Constants.Type | string; + /** An object that contains options for the current enrichment. Starting with version `2020-08-30`, the + * enrichment options are not included in responses from the List Enrichments method. + */ + options?: EnrichmentOptions; + } + export namespace CreateEnrichment { + export namespace Constants { + /** The type of this enrichment. The following types are supported: * `classifier`: Creates a document classifier enrichment from a document classifier model that you create by using the [Document classifier API](/apidocs/discovery-data#createdocumentclassifier). **Note**: A text classifier enrichment can be created only from the product user interface. * `dictionary`: Creates a custom dictionary enrichment that you define in a CSV file. * `regular_expression`: Creates a custom regular expression enrichment from regex syntax that you specify in the request. * `rule_based`: Creates an enrichment from an advanced rules model that is created and exported as a ZIP file from Watson Knowledge Studio. * `uima_annotator`: Creates an enrichment from a custom UIMA text analysis model that is defined in a PEAR file created in one of the following ways: * Watson Explorer Content Analytics Studio. **Note**: Supported in IBM Cloud Pak for Data instances only. * Rule-based model that is created in Watson Knowledge Studio. * `watson_knowledge_studio_model`: Creates an enrichment from a Watson Knowledge Studio machine learning model that is defined in a ZIP file. * `webhook`: Connects to an external enrichment application by using a webhook. * `sentence_classifier`: Use sentence classifier to classify sentences in your documents. This feature is available in IBM Cloud-managed instances only. The sentence classifier feature is beta functionality. Beta features are not supported by the SDKs. */ + export enum Type { + CLASSIFIER = 'classifier', + DICTIONARY = 'dictionary', + REGULAR_EXPRESSION = 'regular_expression', + UIMA_ANNOTATOR = 'uima_annotator', + RULE_BASED = 'rule_based', + WATSON_KNOWLEDGE_STUDIO_MODEL = 'watson_knowledge_studio_model', + WEBHOOK = 'webhook', + SENTENCE_CLASSIFIER = 'sentence_classifier', + } + } + } + + /** + * Default query parameters for this project. + */ + export interface DefaultQueryParams { + /** An array of collection identifiers to query. If empty or omitted all collections in the project are queried. */ + collection_ids?: string[]; + /** Default settings configuration for passage search options. */ + passages?: DefaultQueryParamsPassages; + /** Default project query settings for table results. */ + table_results?: DefaultQueryParamsTableResults; + /** A string representing the default aggregation query for the project. */ + aggregation?: string; + /** Object that contains suggested refinement settings. + * + * **Note**: The `suggested_refinements` parameter that identified dynamic facets from the data is deprecated. + */ + suggested_refinements?: DefaultQueryParamsSuggestedRefinements; + /** When `true`, a spelling suggestions for the query are returned by default. */ + spelling_suggestions?: boolean; + /** When `true`, highlights for the query are returned by default. */ + highlight?: boolean; + /** The number of document results returned by default. */ + count?: number; + /** A comma separated list of document fields to sort results by default. */ + sort?: string; + /** An array of field names to return in document results if present by default. */ + return?: string[]; + } + + /** + * Default settings configuration for passage search options. + */ + export interface DefaultQueryParamsPassages { + /** When `true`, a passage search is performed by default. */ + enabled?: boolean; + /** The number of passages to return. */ + count?: number; + /** An array of field names to perform the passage search on. */ + fields?: string[]; + /** The approximate number of characters that each returned passage will contain. */ + characters?: number; + /** When `true` the number of passages that can be returned from a single document is restricted to the + * *max_per_document* value. + */ + per_document?: boolean; + /** The default maximum number of passages that can be taken from a single document as the result of a passage + * query. + */ + max_per_document?: number; + } + + /** + * Object that contains suggested refinement settings. + * + * **Note**: The `suggested_refinements` parameter that identified dynamic facets from the data is deprecated. + */ + export interface DefaultQueryParamsSuggestedRefinements { + /** When `true`, suggested refinements for the query are returned by default. */ + enabled?: boolean; + /** The number of suggested refinements to return by default. */ + count?: number; + } + + /** + * Default project query settings for table results. + */ + export interface DefaultQueryParamsTableResults { + /** When `true`, a table results for the query are returned by default. */ + enabled?: boolean; + /** The number of table results to return by default. */ + count?: number; + /** The number of table results to include in each result document. */ + per_document?: number; + } + + /** + * Information returned when a document is deleted. + */ + export interface DeleteDocumentResponse { + /** The unique identifier of the document. */ + document_id?: string; + /** Status of the document. A deleted document has the status deleted. */ + status?: DeleteDocumentResponse.Constants.Status | string; + } + export namespace DeleteDocumentResponse { + export namespace Constants { + /** Status of the document. A deleted document has the status deleted. */ + export enum Status { + DELETED = 'deleted', + } + } + } + + /** + * Information returned after an uploaded document is accepted. + */ + export interface DocumentAccepted { + /** The unique identifier of the ingested document. */ + document_id?: string; + /** Status of the document in the ingestion process. A status of `processing` is returned for documents that are + * ingested with a *version* date before `2019-01-01`. The `pending` status is returned for all others. + */ + status?: DocumentAccepted.Constants.Status | string; + } + export namespace DocumentAccepted { + export namespace Constants { + /** Status of the document in the ingestion process. A status of `processing` is returned for documents that are ingested with a *version* date before `2019-01-01`. The `pending` status is returned for all others. */ + export enum Status { + PROCESSING = 'processing', + PENDING = 'pending', + } + } + } + + /** + * List of document attributes. + */ + export interface DocumentAttribute { + /** The type of attribute. */ + type?: string; + /** The text associated with the attribute. */ + text?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + } + + /** + * Information about a document classifier. + */ + export interface DocumentClassifier { + /** The Universally Unique Identifier (UUID) of the document classifier. */ + classifier_id?: string; + /** A human-readable name of the document classifier. */ + name: string; + /** A description of the document classifier. */ + description?: string; + /** The date that the document classifier was created. */ + created?: string; + /** The language of the training data that is associated with the document classifier. Language is specified by + * using the ISO 639-1 language code, such as `en` for English or `ja` for Japanese. + */ + language?: string; + /** An array of enrichments to apply to the data that is used to train and test the document classifier. The + * output from the enrichments is used as features by the classifier to classify the document content both during + * training and at run time. + */ + enrichments?: DocumentClassifierEnrichment[]; + /** An array of fields that are used to train the document classifier. The same set of fields must exist in the + * training data, the test data, and the documents where the resulting document classifier enrichment is applied at + * run time. + */ + recognized_fields?: string[]; + /** The name of the field from the training and test data that contains the classification labels. */ + answer_field?: string; + /** Name of the CSV file with training data that is used to train the document classifier. */ + training_data_file?: string; + /** Name of the CSV file with data that is used to test the document classifier. If no test data is provided, a + * subset of the training data is used for testing purposes. + */ + test_data_file?: string; + /** An object with details for creating federated document classifier models. */ + federated_classification?: ClassifierFederatedModel; + } + + /** + * An object that describes enrichments that are applied to the training and test data that is used by the document + * classifier. + */ + export interface DocumentClassifierEnrichment { + /** The Universally Unique Identifier (UUID) of the enrichment. */ + enrichment_id: string; + /** An array of field names where the enrichment is applied. */ + fields: string[]; + } + + /** + * Information about a document classifier model. + */ + export interface DocumentClassifierModel { + /** The Universally Unique Identifier (UUID) of the document classifier model. */ + model_id?: string; + /** A human-readable name of the document classifier model. */ + name: string; + /** A description of the document classifier model. */ + description?: string; + /** The date that the document classifier model was created. */ + created?: string; + /** The date that the document classifier model was last updated. */ + updated?: string; + /** Name of the CSV file that contains the training data that is used to train the document classifier model. */ + training_data_file?: string; + /** Name of the CSV file that contains data that is used to test the document classifier model. If no test data + * is provided, a subset of the training data is used for testing purposes. + */ + test_data_file?: string; + /** The status of the training run. */ + status?: DocumentClassifierModel.Constants.Status | string; + /** An object that contains information about a trained document classifier model. */ + evaluation?: ClassifierModelEvaluation; + /** The Universally Unique Identifier (UUID) of the enrichment that is generated by this document classifier + * model. + */ + enrichment_id?: string; + /** The date that the document classifier model was deployed. */ + deployed_at?: string; + } + export namespace DocumentClassifierModel { + export namespace Constants { + /** The status of the training run. */ + export enum Status { + TRAINING = 'training', + AVAILABLE = 'available', + FAILED = 'failed', + } + } + } + + /** + * An object that contains a list of document classifier model definitions. + */ + export interface DocumentClassifierModels { + /** An array of document classifier model definitions. */ + models?: DocumentClassifierModel[]; + } + + /** + * An object that contains a list of document classifier definitions. + */ + export interface DocumentClassifiers { + /** An array of document classifier definitions. */ + classifiers?: DocumentClassifier[]; + } + + /** + * Information about a document. + */ + export interface DocumentDetails { + /** The unique identifier of the document. */ + document_id?: string; + /** Date and time that the document is added to the collection. For a child document, the date and time when the + * process that generates the child document runs. The date-time format is `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'`. + */ + created?: string; + /** Date and time that the document is finished being processed and is indexed. This date changes whenever the + * document is reprocessed, including for enrichment changes. The date-time format is + * `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'`. + */ + updated?: string; + /** The status of the ingestion of the document. The possible values are: + * + * * `available`: Ingestion is finished and the document is indexed. + * + * * `failed`: Ingestion is finished, but the document is not indexed because of an error. + * + * * `pending`: The document is uploaded, but the ingestion process is not started. + * + * * `processing`: Ingestion is in progress. + */ + status?: DocumentDetails.Constants.Status | string; + /** Array of JSON objects for notices, meaning warning or error messages, that are produced by the document + * ingestion process. The array does not include notices that are produced for child documents that are generated + * when a document is processed. + */ + notices?: Notice[]; + /** Information about the child documents that are generated from a single document during ingestion or other + * processing. + */ + children?: DocumentDetailsChildren; + /** Name of the original source file (if available). */ + filename?: string; + /** The type of the original source file, such as `csv`, `excel`, `html`, `json`, `pdf`, `text`, `word`, and so + * on. + */ + file_type?: string; + /** The SHA-256 hash of the original source file. The hash is formatted as a hexadecimal string. */ + sha256?: string; + } + export namespace DocumentDetails { + export namespace Constants { + /** The status of the ingestion of the document. The possible values are: * `available`: Ingestion is finished and the document is indexed. * `failed`: Ingestion is finished, but the document is not indexed because of an error. * `pending`: The document is uploaded, but the ingestion process is not started. * `processing`: Ingestion is in progress. */ + export enum Status { + AVAILABLE = 'available', + FAILED = 'failed', + PENDING = 'pending', + PROCESSING = 'processing', + } + } + } + + /** + * Information about the child documents that are generated from a single document during ingestion or other + * processing. + */ + export interface DocumentDetailsChildren { + /** Indicates whether the child documents have any notices. The value is `false` if the document does not have + * child documents. + */ + have_notices?: boolean; + /** Number of child documents. The value is `0` when processing of the document doesn't generate any child + * documents. + */ + count?: number; + } + + /** + * Information about a specific enrichment. + */ + export interface Enrichment { + /** The Universally Unique Identifier (UUID) of this enrichment. */ + enrichment_id?: string; + /** The human readable name for this enrichment. */ + name?: string; + /** The description of this enrichment. */ + description?: string; + /** The type of this enrichment. */ + type?: Enrichment.Constants.Type | string; + /** An object that contains options for the current enrichment. Starting with version `2020-08-30`, the + * enrichment options are not included in responses from the List Enrichments method. + */ + options?: EnrichmentOptions; + } + export namespace Enrichment { + export namespace Constants { + /** The type of this enrichment. */ + export enum Type { + PART_OF_SPEECH = 'part_of_speech', + SENTIMENT = 'sentiment', + NATURAL_LANGUAGE_UNDERSTANDING = 'natural_language_understanding', + DICTIONARY = 'dictionary', + REGULAR_EXPRESSION = 'regular_expression', + UIMA_ANNOTATOR = 'uima_annotator', + RULE_BASED = 'rule_based', + WATSON_KNOWLEDGE_STUDIO_MODEL = 'watson_knowledge_studio_model', + CLASSIFIER = 'classifier', + WEBHOOK = 'webhook', + SENTENCE_CLASSIFIER = 'sentence_classifier', + } + } + } + + /** + * An object that contains options for the current enrichment. Starting with version `2020-08-30`, the enrichment + * options are not included in responses from the List Enrichments method. + */ + export interface EnrichmentOptions { + /** An array of supported languages for this enrichment. When creating an enrichment, only specify a language + * that is used by the model or in the dictionary. Required when **type** is `dictionary`. Optional when **type** + * is `rule_based`. Not valid when creating any other type of enrichment. + */ + languages?: string[]; + /** The name of the entity type. This value is used as the field name in the index. Required when **type** is + * `dictionary` or `regular_expression`. Not valid when creating any other type of enrichment. + */ + entity_type?: string; + /** The regular expression to apply for this enrichment. Required when **type** is `regular_expression`. Not + * valid when creating any other type of enrichment. + */ + regular_expression?: string; + /** The name of the result document field that this enrichment creates. Required when **type** is `rule_based` + * or `classifier`. Not valid when creating any other type of enrichment. + */ + result_field?: string; + /** The Universally Unique Identifier (UUID) of the document classifier. Required when **type** is `classifier`. + * Not valid when creating any other type of enrichment. + */ + classifier_id?: string; + /** The Universally Unique Identifier (UUID) of the document classifier model. Required when **type** is + * `classifier`. Not valid when creating any other type of enrichment. + */ + model_id?: string; + /** Specifies a threshold. Only classes with evaluation confidence scores that are higher than the specified + * threshold are included in the output. Optional when **type** is `classifier`. Not valid when creating any other + * type of enrichment. + */ + confidence_threshold?: number; + /** Evaluates only the classes that fall in the top set of results when ranked by confidence. For example, if + * set to `5`, then the top five classes for each document are evaluated. If set to 0, the **confidence_threshold** + * is used to determine the predicted classes. Optional when **type** is `classifier`. Not valid when creating any + * other type of enrichment. + */ + top_k?: number; + /** A URL that uses the SSL protocol (begins with https) for the webhook. Required when type is `webhook`. Not + * valid when creating any other type of enrichment. + */ + url?: string; + /** The Discovery API version that allows to distinguish the schema. The version is specified in the + * `yyyy-mm-dd` format. Optional when `type` is `webhook`. Not valid when creating any other type of enrichment. + */ + version?: string; + /** A private key can be included in the request to authenticate with the external service. The maximum length + * is 1,024 characters. Optional when `type` is `webhook`. Not valid when creating any other type of enrichment. + */ + secret?: string; + /** An array of headers to pass with the HTTP request. Optional when `type` is `webhook`. Not valid when + * creating any other type of enrichment. + */ + headers?: WebhookHeader; + /** Discovery calculates offsets of the text's location with this encoding type in documents. Use the same + * location encoding type in both Discovery and external enrichment for a document. + * + * These encoding types are supported: `utf-8`, `utf-16`, and `utf-32`. Optional when `type` is `webhook`. Not + * valid when creating any other type of enrichment. + */ + location_encoding?: string; + } + + /** + * An object that contains an array of enrichment definitions. + */ + export interface Enrichments { + /** An array of enrichment definitions. */ + enrichments?: Enrichment[]; + } + + /** + * An expansion definition. Each object respresents one set of expandable strings. For example, you could have + * expansions for the word `hot` in one object, and expansions for the word `cold` in another. Follow these guidelines + * when you add terms: + * + * * Specify the terms in lowercase. Lowercase terms expand to uppercase. + * + * * Multiword terms are supported only in bidirectional expansions. + * + * * Do not specify a term that is specified in the stop words list for the collection. + */ + export interface Expansion { + /** A list of terms that will be expanded for this expansion. If specified, only the items in this list are + * expanded. + */ + input_terms?: string[]; + /** A list of terms that this expansion will be expanded to. If specified without **input_terms**, the list also + * functions as the input term list. + */ + expanded_terms: string[]; + } + + /** + * The query expansion definitions for the specified collection. + */ + export interface Expansions { + /** An array of query expansion definitions. + * + * Each object in the **expansions** array represents a term or set of terms that will be expanded into other + * terms. Each expansion object can be configured as `bidirectional` or `unidirectional`. + * + * * **Bidirectional**: Each entry in the `expanded_terms` list expands to include all expanded terms. For example, + * a query for `ibm` expands to `ibm OR international business machines OR big blue`. + * + * * **Unidirectional**: The terms in `input_terms` in the query are replaced by the terms in `expanded_terms`. For + * example, a query for the often misused term `on premise` is converted to `on premises OR on-premises` and does + * not contain the original term. If you want an input term to be included in the query, then repeat the input term + * in the expanded terms list. + */ + expansions: Expansion[]; + } + + /** + * Object that contains field details. + */ + export interface Field { + /** The name of the field. */ + field?: string; + /** The type of the field. */ + type?: Field.Constants.Type | string; + /** The collection Id of the collection where the field was found. */ + collection_id?: string; + } + export namespace Field { + export namespace Constants { + /** The type of the field. */ + export enum Type { + NESTED = 'nested', + STRING = 'string', + DATE = 'date', + LONG = 'long', + INTEGER = 'integer', + SHORT = 'short', + BYTE = 'byte', + DOUBLE = 'double', + FLOAT = 'float', + BOOLEAN = 'boolean', + BINARY = 'binary', + } + } + } + + /** + * An object that contains a list of batches that are ready for enrichment by the external application. + */ + export interface ListBatchesResponse { + /** An array that lists the batches in a collection. */ + batches?: BatchDetails[]; + } + + /** + * Response object that contains an array of collection details. + */ + export interface ListCollectionsResponse { + /** An array that contains information about each collection in the project. */ + collections?: Collection[]; + } + + /** + * Response object that contains an array of documents. + */ + export interface ListDocumentsResponse { + /** The number of matching results for the document query. */ + matching_results?: number; + /** An array that lists the documents in a collection. Only the document ID of each document is returned in the + * list. You can use the [Get document](#getdocument) method to get more information about an individual document. + */ + documents?: DocumentDetails[]; + } + + /** + * The list of fetched fields. + * + * The fields are returned using a fully qualified name format, however, the format differs slightly from that used by + * the query operations. + * + * * Fields which contain nested objects are assigned a type of "nested". + * + * * Fields which belong to a nested object are prefixed with `.properties` (for example, + * `warnings.properties.severity` means that the `warnings` object has a property called `severity`). + */ + export interface ListFieldsResponse { + /** An array that contains information about each field in the collections. */ + fields?: Field[]; + } + + /** + * A list of projects in this instance. + */ + export interface ListProjectsResponse { + /** An array of project details. */ + projects?: ProjectListDetails[]; + } + + /** + * A macro-average computes metric independently for each class and then takes the average. Class refers to the + * classification label that is specified in the **answer_field**. + */ + export interface ModelEvaluationMacroAverage { + /** A metric that measures how many of the overall documents are classified correctly. */ + precision: number; + /** A metric that measures how often documents that should be classified into certain classes are classified + * into those classes. + */ + recall: number; + /** A metric that measures whether the optimal balance between precision and recall is reached. The F1 score can + * be interpreted as a weighted average of the precision and recall values. An F1 score reaches its best value at 1 + * and worst value at 0. + */ + f1: number; + } + + /** + * A micro-average aggregates the contributions of all classes to compute the average metric. Classes refers to the + * classification labels that are specified in the **answer_field**. + */ + export interface ModelEvaluationMicroAverage { + /** A metric that measures how many of the overall documents are classified correctly. */ + precision: number; + /** A metric that measures how often documents that should be classified into certain classes are classified + * into those classes. + */ + recall: number; + /** A metric that measures whether the optimal balance between precision and recall is reached. The F1 score can + * be interpreted as a weighted average of the precision and recall values. An F1 score reaches its best value at 1 + * and worst value at 0. + */ + f1: number; + } + + /** + * A notice produced for the collection. + */ + export interface Notice { + /** Identifies the notice. Many notices might have the same ID. This field exists so that user applications can + * programmatically identify a notice and take automatic corrective action. Typical notice IDs include: + * + * `index_failed`, `index_failed_too_many_requests`, `index_failed_incompatible_field`, + * `index_failed_cluster_unavailable`, `ingestion_timeout`, `ingestion_error`, `bad_request`, `internal_error`, + * `missing_model`, `unsupported_model`, `smart_document_understanding_failed_incompatible_field`, + * `smart_document_understanding_failed_internal_error`, `smart_document_understanding_failed_internal_error`, + * `smart_document_understanding_failed_warning`, `smart_document_understanding_page_error`, + * `smart_document_understanding_page_warning`. **Note:** This is not a complete list. Other values might be + * returned. + */ + notice_id?: string; + /** The creation date of the collection in the format yyyy-MM-dd'T'HH:mm:ss.SSS'Z'. */ + created?: string; + /** Unique identifier of the document. */ + document_id?: string; + /** Unique identifier of the collection. */ + collection_id?: string; + /** Unique identifier of the query used for relevance training. */ + query_id?: string; + /** Severity level of the notice. */ + severity?: Notice.Constants.Severity | string; + /** Ingestion or training step in which the notice occurred. */ + step?: string; + /** The description of the notice. */ + description?: string; + } + export namespace Notice { + export namespace Constants { + /** Severity level of the notice. */ + export enum Severity { + WARNING = 'warning', + ERROR = 'error', + } + } + } + + /** + * An object that measures the metrics from a training run for each classification label separately. + */ + export interface PerClassModelEvaluation { + /** Class name. Each class name is derived from a value in the **answer_field**. */ + name: string; + /** A metric that measures how many of the overall documents are classified correctly. */ + precision: number; + /** A metric that measures how often documents that should be classified into certain classes are classified + * into those classes. + */ + recall: number; + /** A metric that measures whether the optimal balance between precision and recall is reached. The F1 score can + * be interpreted as a weighted average of the precision and recall values. An F1 score reaches its best value at 1 + * and worst value at 0. + */ + f1: number; + } + + /** + * Detailed information about the specified project. + */ + export interface ProjectDetails { + /** The Universally Unique Identifier (UUID) of this project. */ + project_id?: string; + /** The human readable name of this project. */ + name?: string; + /** The type of project. + * + * The `content_intelligence` type is a *Document Retrieval for Contracts* project and the `other` type is a + * *Custom* project. + * + * The `content_mining` and `content_intelligence` types are available with Premium plan managed deployments and + * installed deployments only. + * + * The Intelligent Document Processing (IDP) project type is available from IBM Cloud-managed instances only. + */ + type?: ProjectDetails.Constants.Type | string; + /** Relevancy training status information for this project. */ + relevancy_training_status?: ProjectListDetailsRelevancyTrainingStatus; + /** The number of collections configured in this project. */ + collection_count?: number; + /** Default query parameters for this project. */ + default_query_parameters?: DefaultQueryParams; + } + export namespace ProjectDetails { + export namespace Constants { + /** The type of project. The `content_intelligence` type is a *Document Retrieval for Contracts* project and the `other` type is a *Custom* project. The `content_mining` and `content_intelligence` types are available with Premium plan managed deployments and installed deployments only. The Intelligent Document Processing (IDP) project type is available from IBM Cloud-managed instances only. */ + export enum Type { + INTELLIGENT_DOCUMENT_PROCESSING = 'intelligent_document_processing', + DOCUMENT_RETRIEVAL = 'document_retrieval', + CONVERSATIONAL_SEARCH = 'conversational_search', + CONTENT_MINING = 'content_mining', + CONTENT_INTELLIGENCE = 'content_intelligence', + OTHER = 'other', + } + } + } + + /** + * Details about a specific project. + */ + export interface ProjectListDetails { + /** The Universally Unique Identifier (UUID) of this project. */ + project_id?: string; + /** The human readable name of this project. */ + name?: string; + /** The type of project. + * + * The `content_intelligence` type is a *Document Retrieval for Contracts* project and the `other` type is a + * *Custom* project. + * + * The `content_mining` and `content_intelligence` types are available with Premium plan managed deployments and + * installed deployments only. + * + * The Intelligent Document Processing (IDP) project type is available from IBM Cloud-managed instances only. + */ + type?: ProjectListDetails.Constants.Type | string; + /** Relevancy training status information for this project. */ + relevancy_training_status?: ProjectListDetailsRelevancyTrainingStatus; + /** The number of collections configured in this project. */ + collection_count?: number; + } + export namespace ProjectListDetails { + export namespace Constants { + /** The type of project. The `content_intelligence` type is a *Document Retrieval for Contracts* project and the `other` type is a *Custom* project. The `content_mining` and `content_intelligence` types are available with Premium plan managed deployments and installed deployments only. The Intelligent Document Processing (IDP) project type is available from IBM Cloud-managed instances only. */ + export enum Type { + INTELLIGENT_DOCUMENT_PROCESSING = 'intelligent_document_processing', + DOCUMENT_RETRIEVAL = 'document_retrieval', + CONVERSATIONAL_SEARCH = 'conversational_search', + CONTENT_MINING = 'content_mining', + CONTENT_INTELLIGENCE = 'content_intelligence', + OTHER = 'other', + } + } + } + + /** + * Relevancy training status information for this project. + */ + export interface ProjectListDetailsRelevancyTrainingStatus { + /** When the training data was updated. */ + data_updated?: string; + /** The total number of examples. */ + total_examples?: number; + /** When `true`, sufficient label diversity is present to allow training for this project. */ + sufficient_label_diversity?: boolean; + /** When `true`, the relevancy training is in processing. */ + processing?: boolean; + /** When `true`, the minimum number of examples required to train has been met. */ + minimum_examples_added?: boolean; + /** The time that the most recent successful training occurred. */ + successfully_trained?: string; + /** When `true`, relevancy training is available when querying collections in the project. */ + available?: boolean; + /** The number of notices generated during the relevancy training. */ + notices?: number; + /** When `true`, the minimum number of queries required to train has been met. */ + minimum_queries_added?: boolean; + } + + /** + * An object that defines how to aggregate query results. + */ + export interface QueryAggregation { + } + + /** + * Result group for the `group_by` aggregation. + */ + export interface QueryGroupByAggregationResult { + /** The condition that is met by the documents in this group. For example, `YEARTXT<2000`. */ + key: string; + /** Number of documents that meet the query and condition. */ + matching_results: number; + /** The relevancy for this group. Returned only if `relevancy:true` is specified in the request. */ + relevancy?: number; + /** Number of documents that meet the condition in the whole set of documents in this collection. Returned only + * when `relevancy:true` is specified in the request. + */ + total_matching_documents?: number; + /** The number of documents that are estimated to match the query and condition. Returned only when + * `relevancy:true` is specified in the request. + */ + estimated_matching_results?: number; + /** An array of subaggregations. Returned only when this aggregation is returned as a subaggregation. */ + aggregations?: JsonObject[]; + } + + /** + * Histogram numeric interval result. + */ + export interface QueryHistogramAggregationResult { + /** The value of the upper bound for the numeric segment. */ + key: number; + /** Number of documents with the specified key as the upper bound. */ + matching_results: number; + /** An array of subaggregations. Returned only when this aggregation is returned as a subaggregation. */ + aggregations?: JsonObject[]; + } + + /** + * Configuration for passage retrieval. + */ + export interface QueryLargePassages { + /** A passages query that returns the most relevant passages from the results. */ + enabled?: boolean; + /** If `true`, ranks the documents by document quality, and then returns the highest-ranked passages per + * document in a `document_passages` field for each document entry in the results list of the response. + * + * If `false`, ranks the passages from all of the documents by passage quality regardless of the document quality + * and returns them in a separate `passages` field in the response. + */ + per_document?: boolean; + /** Maximum number of passages to return per document in the result. Ignored if **passages.per_document** is + * `false`. + */ + max_per_document?: number; + /** A list of fields to extract passages from. By default, passages are extracted from the `text` and `title` + * fields only. If you add this parameter and specify an empty list (`[]`) as its value, then the service searches + * all root-level fields for suitable passages. + */ + fields?: string[]; + /** The maximum number of passages to return. Ignored if **passages.per_document** is `true`. */ + count?: number; + /** The approximate number of characters that any one passage will have. */ + characters?: number; + /** When true, `answer` objects are returned as part of each passage in the query results. The primary + * difference between an `answer` and a `passage` is that the length of a passage is defined by the query, where + * the length of an `answer` is calculated by Discovery based on how much text is needed to answer the question. + * + * This parameter is ignored if passages are not enabled for the query, or no **natural_language_query** is + * specified. + * + * If the **find_answers** parameter is set to `true` and **per_document** parameter is also set to `true`, then + * the document search results and the passage search results within each document are reordered using the answer + * confidences. The goal of this reordering is to place the best answer as the first answer of the first passage of + * the first document. Similarly, if the **find_answers** parameter is set to `true` and **per_document** parameter + * is set to `false`, then the passage search results are reordered in decreasing order of the highest confidence + * answer for each document and passage. + * + * The **find_answers** parameter is available only on managed instances of Discovery. + */ + find_answers?: boolean; + /** The number of `answer` objects to return per passage if the **find_answers** parmeter is specified as + * `true`. + */ + max_answers_per_passage?: number; + } + + /** + * Finds results from documents that are similar to documents of interest. Use this parameter to add a *More like + * these* function to your search. You can include this parameter with or without a **query**, **filter** or + * **natural_language_query** parameter. + */ + export interface QueryLargeSimilar { + /** When `true`, includes documents in the query results that are similar to documents you specify. */ + enabled?: boolean; + /** The list of documents of interest. Required if **enabled** is `true`. */ + document_ids?: string[]; + /** Looks for similarities in the specified subset of fields in the documents. If not specified, all of the + * document fields are used. + */ + fields?: string[]; + } + + /** + * Configuration for suggested refinements. + * + * **Note**: The **suggested_refinements** parameter that identified dynamic facets from the data is deprecated. + */ + export interface QueryLargeSuggestedRefinements { + /** Whether to perform suggested refinements. */ + enabled?: boolean; + /** Maximum number of suggested refinements texts to be returned. The maximum is `100`. */ + count?: number; + } + + /** + * Configuration for table retrieval. + */ + export interface QueryLargeTableResults { + /** Whether to enable table retrieval. */ + enabled?: boolean; + /** Maximum number of tables to return. */ + count?: number; + } + + /** + * Object that contains notice query results. + */ + export interface QueryNoticesResponse { + /** The number of matching results. */ + matching_results?: number; + /** Array of document results that match the query. */ + notices?: Notice[]; + } + + /** + * Result for the `pair` aggregation. + */ + export interface QueryPairAggregationResult { + /** Array of subaggregations of type `term`, `group_by`, `histogram`, or `timeslice`. Each element of the matrix + * that is returned contains a **relevancy** value that is calculated from the combination of each value from the + * first and second aggregations. + */ + aggregations?: JsonObject[]; + } + + /** + * A response that contains the documents and aggregations for the query. + */ + export interface QueryResponse { + /** The number of matching results for the query. Results that match due to a curation only are not counted in + * the total. + */ + matching_results?: number; + /** Array of document results for the query. */ + results?: QueryResult[]; + /** Array of aggregations for the query. */ + aggregations?: QueryAggregation[]; + /** An object contain retrieval type information. */ + retrieval_details?: RetrievalDetails; + /** Suggested correction to the submitted **natural_language_query** value. */ + suggested_query?: string; + /** Deprecated: Array of suggested refinements. **Note**: The `suggested_refinements` parameter that identified + * dynamic facets from the data is deprecated. + */ + suggested_refinements?: QuerySuggestedRefinement[]; + /** Array of table results. */ + table_results?: QueryTableResult[]; + /** Passages that best match the query from across all of the collections in the project. Returned if + * **passages.per_document** is `false`. + */ + passages?: QueryResponsePassage[]; + } + + /** + * A passage query response. + */ + export interface QueryResponsePassage { + /** The content of the extracted passage. */ + passage_text?: string; + /** The confidence score of the passage's analysis. A higher score indicates greater confidence. The score is + * used to rank the passages from all documents and is returned only if **passages.per_document** is `false`. + */ + passage_score?: number; + /** The unique identifier of the ingested document. */ + document_id?: string; + /** The unique identifier of the collection. */ + collection_id?: string; + /** The position of the first character of the extracted passage in the originating field. */ + start_offset?: number; + /** The position after the last character of the extracted passage in the originating field. */ + end_offset?: number; + /** The label of the field from which the passage has been extracted. */ + field?: string; + /** An array of extracted answers to the specified query. Returned for natural language queries when + * **passages.per_document** is `false`. + */ + answers?: ResultPassageAnswer[]; + } + + /** + * Result document for the specified query. + * + * This type supports additional properties of type any. The remaining key-value pairs. + */ + export interface QueryResult { + /** The unique identifier of the document. */ + document_id: string; + /** Metadata of the document. */ + metadata?: JsonObject; + /** Metadata of a query result. */ + result_metadata: QueryResultMetadata; + /** Passages from the document that best matches the query. Returned if **passages.per_document** is `true`. */ + document_passages?: QueryResultPassage[]; + + /** + * QueryResult accepts additional properties of type any. The remaining key-value pairs. + */ + [propName: string]: any; + } + + /** + * Metadata of a query result. + */ + export interface QueryResultMetadata { + /** The document retrieval source that produced this search result. */ + document_retrieval_source?: QueryResultMetadata.Constants.DocumentRetrievalSource | string; + /** The collection id associated with this training data set. */ + collection_id: string; + /** The confidence score for the given result. Calculated based on how relevant the result is estimated to be. + * The score can range from `0.0` to `1.0`. The higher the number, the more relevant the document. The `confidence` + * value for a result was calculated using the model specified in the `document_retrieval_strategy` field of the + * result set. This field is returned only if the **natural_language_query** parameter is specified in the query. + */ + confidence?: number; + } + export namespace QueryResultMetadata { + export namespace Constants { + /** The document retrieval source that produced this search result. */ + export enum DocumentRetrievalSource { + SEARCH = 'search', + CURATION = 'curation', + } + } + } + + /** + * A passage query result. + */ + export interface QueryResultPassage { + /** The content of the extracted passage. */ + passage_text?: string; + /** The position of the first character of the extracted passage in the originating field. */ + start_offset?: number; + /** The position after the last character of the extracted passage in the originating field. */ + end_offset?: number; + /** The label of the field from which the passage has been extracted. */ + field?: string; + /** An arry of extracted answers to the specified query. Returned for natural language queries when + * **passages.per_document** is `true`. + */ + answers?: ResultPassageAnswer[]; + } + + /** + * A suggested additional query term or terms user to filter results. **Note**: The `suggested_refinements` parameter + * is deprecated. + */ + export interface QuerySuggestedRefinement { + /** The text used to filter. */ + text?: string; + } + + /** + * A tables whose content or context match a search query. + */ + export interface QueryTableResult { + /** The identifier for the retrieved table. */ + table_id?: string; + /** The identifier of the document the table was retrieved from. */ + source_document_id?: string; + /** The identifier of the collection the table was retrieved from. */ + collection_id?: string; + /** HTML snippet of the table info. */ + table_html?: string; + /** The offset of the table html snippet in the original document html. */ + table_html_offset?: number; + /** Full table object retrieved from Table Understanding Enrichment. */ + table?: TableResultTable; + } + + /** + * Top value result for the `term` aggregation. + */ + export interface QueryTermAggregationResult { + /** Value of the field with a nonzero frequency in the document set. */ + key: string; + /** Number of documents that contain the 'key'. */ + matching_results: number; + /** The relevancy score for this result. Returned only if `relevancy:true` is specified in the request. */ + relevancy?: number; + /** Number of documents in the collection that contain the term in the specified field. Returned only when + * `relevancy:true` is specified in the request. + */ + total_matching_documents?: number; + /** Number of documents that are estimated to match the query and also meet the condition. Returned only when + * `relevancy:true` is specified in the request. + */ + estimated_matching_results?: number; + /** An array of subaggregations. Returned only when this aggregation is combined with other aggregations in the + * request or is returned as a subaggregation. + */ + aggregations?: JsonObject[]; + } + + /** + * A timeslice interval segment. + */ + export interface QueryTimesliceAggregationResult { + /** String date value of the upper bound for the timeslice interval in ISO-8601 format. */ + key_as_string: string; + /** Numeric date value of the upper bound for the timeslice interval in UNIX milliseconds since epoch. */ + key: number; + /** Number of documents with the specified key as the upper bound. */ + matching_results: number; + /** An array of subaggregations. Returned only when this aggregation is returned as a subaggregation. */ + aggregations?: JsonObject[]; + } + + /** + * A query response that contains the matching documents for the preceding aggregations. + */ + export interface QueryTopHitsAggregationResult { + /** Number of matching results. */ + matching_results: number; + /** An array of the document results in an ordered list. */ + hits?: JsonObject[]; + } + + /** + * Result for the `topic` aggregation. + */ + export interface QueryTopicAggregationResult { + /** Array of subaggregations of type `term` or `group_by` and `timeslice`. Each element of the matrix that is + * returned contains a **topic_indicator** that is calculated from the combination of each aggregation value and + * segment of time. + */ + aggregations?: JsonObject[]; + } + + /** + * Result for the `trend` aggregation. + */ + export interface QueryTrendAggregationResult { + /** Array of subaggregations of type `term` or `group_by` and `timeslice`. Each element of the matrix that is + * returned contains a **trend_indicator** that is calculated from the combination of each aggregation value and + * segment of time. + */ + aggregations?: JsonObject[]; + } + + /** + * Object that contains a potential answer to the specified query. + */ + export interface ResultPassageAnswer { + /** Answer text for the specified query as identified by Discovery. */ + answer_text?: string; + /** The position of the first character of the extracted answer in the originating field. */ + start_offset?: number; + /** The position after the last character of the extracted answer in the originating field. */ + end_offset?: number; + /** An estimate of the probability that the answer is relevant. */ + confidence?: number; + } + + /** + * An object contain retrieval type information. + */ + export interface RetrievalDetails { + /** Identifies the document retrieval strategy used for this query. `relevancy_training` indicates that the + * results were returned using a relevancy trained model. + * + * **Note**: In the event of trained collections being queried, but the trained model is not used to return + * results, the **document_retrieval_strategy** is listed as `untrained`. + */ + document_retrieval_strategy?: RetrievalDetails.Constants.DocumentRetrievalStrategy | string; + } + export namespace RetrievalDetails { + export namespace Constants { + /** Identifies the document retrieval strategy used for this query. `relevancy_training` indicates that the results were returned using a relevancy trained model. **Note**: In the event of trained collections being queried, but the trained model is not used to return results, the **document_retrieval_strategy** is listed as `untrained`. */ + export enum DocumentRetrievalStrategy { + UNTRAINED = 'untrained', + RELEVANCY_TRAINING = 'relevancy_training', + } + } + } + + /** + * List of words to filter out of text that is submitted in queries. + */ + export interface StopWordList { + /** List of stop words. */ + stopwords: string[]; + } + + /** + * Cells that are not table header, column header, or row header cells. + */ + export interface TableBodyCells { + /** The unique ID of the cell in the current table. */ + cell_id?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + /** The textual contents of this cell from the input document without associated markup content. */ + text?: string; + /** The `begin` index of this cell's `row` location in the current table. */ + row_index_begin?: number; + /** The `end` index of this cell's `row` location in the current table. */ + row_index_end?: number; + /** The `begin` index of this cell's `column` location in the current table. */ + column_index_begin?: number; + /** The `end` index of this cell's `column` location in the current table. */ + column_index_end?: number; + /** A list of ID values that represent the table row headers that are associated with this body cell. */ + row_header_ids?: string[]; + /** A list of row header values that are associated with this body cell. */ + row_header_texts?: string[]; + /** A list of normalized row header values that are associated with this body cell. */ + row_header_texts_normalized?: string[]; + /** A list of ID values that represent the column headers that are associated with this body cell. */ + column_header_ids?: string[]; + /** A list of column header values that are associated with this body cell. */ + column_header_texts?: string[]; + /** A list of normalized column header values that are associated with this body cell. */ + column_header_texts_normalized?: string[]; + /** A list of document attributes. */ + attributes?: DocumentAttribute[]; + } + + /** + * A key in a key-value pair. + */ + export interface TableCellKey { + /** The unique ID of the key in the table. */ + cell_id?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + /** The text content of the table cell without HTML markup. */ + text?: string; + } + + /** + * A value in a key-value pair. + */ + export interface TableCellValues { + /** The unique ID of the value in the table. */ + cell_id?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + /** The text content of the table cell without HTML markup. */ + text?: string; + } + + /** + * Column-level cells, each applicable as a header to other cells in the same column as itself, of the current table. + */ + export interface TableColumnHeaders { + /** The unique ID of the cell in the current table. */ + cell_id?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + /** The textual contents of this cell from the input document without associated markup content. */ + text?: string; + /** Normalized column header text. */ + text_normalized?: string; + /** The `begin` index of this cell's `row` location in the current table. */ + row_index_begin?: number; + /** The `end` index of this cell's `row` location in the current table. */ + row_index_end?: number; + /** The `begin` index of this cell's `column` location in the current table. */ + column_index_begin?: number; + /** The `end` index of this cell's `column` location in the current table. */ + column_index_end?: number; + } + + /** + * The numeric location of the identified element in the document, represented with two integers labeled `begin` and + * `end`. + */ + export interface TableElementLocation { + /** The element's `begin` index. */ + begin: number; + /** The element's `end` index. */ + end: number; + } + + /** + * The contents of the current table's header. + */ + export interface TableHeaders { + /** The unique ID of the cell in the current table. */ + cell_id?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + /** The textual contents of the cell from the input document without associated markup content. */ + text?: string; + /** The `begin` index of this cell's `row` location in the current table. */ + row_index_begin?: number; + /** The `end` index of this cell's `row` location in the current table. */ + row_index_end?: number; + /** The `begin` index of this cell's `column` location in the current table. */ + column_index_begin?: number; + /** The `end` index of this cell's `column` location in the current table. */ + column_index_end?: number; + } + + /** + * Key-value pairs detected across cell boundaries. + */ + export interface TableKeyValuePairs { + /** A key in a key-value pair. */ + key?: TableCellKey; + /** A list of values in a key-value pair. */ + value?: TableCellValues[]; + } + + /** + * Full table object retrieved from Table Understanding Enrichment. + */ + export interface TableResultTable { + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + /** The textual contents of the current table from the input document without associated markup content. */ + text?: string; + /** Text and associated location within a table. */ + section_title?: TableTextLocation; + /** Text and associated location within a table. */ + title?: TableTextLocation; + /** An array of table-level cells that apply as headers to all the other cells in the current table. */ + table_headers?: TableHeaders[]; + /** An array of row-level cells, each applicable as a header to other cells in the same row as itself, of the + * current table. + */ + row_headers?: TableRowHeaders[]; + /** An array of column-level cells, each applicable as a header to other cells in the same column as itself, of + * the current table. + */ + column_headers?: TableColumnHeaders[]; + /** An array of key-value pairs identified in the current table. */ + key_value_pairs?: TableKeyValuePairs[]; + /** An array of cells that are neither table header nor column header nor row header cells, of the current table + * with corresponding row and column header associations. + */ + body_cells?: TableBodyCells[]; + /** An array of lists of textual entries across the document related to the current table being parsed. */ + contexts?: TableTextLocation[]; + } + + /** + * Row-level cells, each applicable as a header to other cells in the same row as itself, of the current table. + */ + export interface TableRowHeaders { + /** The unique ID of the cell in the current table. */ + cell_id?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + /** The textual contents of this cell from the input document without associated markup content. */ + text?: string; + /** Normalized row header text. */ + text_normalized?: string; + /** The `begin` index of this cell's `row` location in the current table. */ + row_index_begin?: number; + /** The `end` index of this cell's `row` location in the current table. */ + row_index_end?: number; + /** The `begin` index of this cell's `column` location in the current table. */ + column_index_begin?: number; + /** The `end` index of this cell's `column` location in the current table. */ + column_index_end?: number; + } + + /** + * Text and associated location within a table. + */ + export interface TableTextLocation { + /** The text retrieved. */ + text?: string; + /** The numeric location of the identified element in the document, represented with two integers labeled + * `begin` and `end`. + */ + location?: TableElementLocation; + } + + /** + * Object that contains example response details for a training query. + */ + export interface TrainingExample { + /** The document ID associated with this training example. */ + document_id: string; + /** The collection ID associated with this training example. */ + collection_id: string; + /** The relevance score of the training example. Scores range from `0` to `100`. Zero means not relevant. The + * higher the number, the more relevant the example. + */ + relevance: number; + /** The date and time the example was created. */ + created?: string; + /** The date and time the example was updated. */ + updated?: string; + } + + /** + * Object that contains training query details. + */ + export interface TrainingQuery { + /** The query ID associated with the training query. */ + query_id?: string; + /** The natural text query that is used as the training query. */ + natural_language_query: string; + /** The filter used on the collection before the **natural_language_query** is applied. Only specify a filter if + * the documents that you consider to be most relevant are not included in the top 100 results when you submit test + * queries. If you specify a filter during training, apply the same filter to queries that are submitted at runtime + * for optimal ranking results. + */ + filter?: string; + /** The date and time the query was created. */ + created?: string; + /** The date and time the query was updated. */ + updated?: string; + /** Array of training examples. */ + examples: TrainingExample[]; + } + + /** + * Object specifying the training queries contained in the identified training set. + */ + export interface TrainingQuerySet { + /** Array of training queries. At least 50 queries are required for training to begin. A maximum of 10,000 + * queries are returned. + */ + queries?: TrainingQuery[]; + } + + /** + * An object that contains a new name or description for a document classifier, updated training data, or new or + * updated test data. + */ + export interface UpdateDocumentClassifier { + /** A new name for the classifier. */ + name?: string; + /** A new description for the classifier. */ + description?: string; + } + + /** + * An array of headers to pass with the HTTP request. Optional when `type` is `webhook`. Not valid when creating any + * other type of enrichment. + */ + export interface WebhookHeader { + /** The name of an HTTP header. */ + name: string; + /** The value of an HTTP header. */ + value: string; + } + + /** + * A compressed newline delimited JSON (NDJSON) file containing the document. The NDJSON format is used to describe + * structured data. The file name format is `{batch_id}.ndjson.gz`. For more information, see [Binary attachment from + * the pull batches + * method](/docs/discovery-data?topic=discovery-data-external-enrichment#binary-attachment-pull-batches). + */ + export interface PullBatchesResponse { + /** A compressed NDJSON file containing the document. */ + file?: string; + } + + /** + * Returns a scalar calculation across all documents for the field specified. Possible calculations include min, max, + * sum, average, and unique_count. + */ + export interface QueryAggregationQueryCalculationAggregation extends QueryAggregation { + /** Specifies the calculation type, such as 'average`, `max`, `min`, `sum`, or `unique_count`. */ + type?: string; + /** The field to perform the calculation on. */ + field: string; + /** The value of the calculation. */ + value?: number; + } + + /** + * A modifier that narrows the document set of the subaggregations it precedes. + */ + export interface QueryAggregationQueryFilterAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `filter`. */ + type?: string; + /** The filter that is written in Discovery Query Language syntax and is applied to the documents before + * subaggregations are run. + */ + match: string; + /** Number of documents that match the filter. */ + matching_results: number; + /** An array of subaggregations. */ + aggregations?: JsonObject[]; + } + + /** + * Separates document results into groups that meet the conditions you specify. + */ + export interface QueryAggregationQueryGroupByAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `group_by`. */ + type?: string; + /** An array of results. */ + results?: QueryGroupByAggregationResult[]; + } + + /** + * Numeric interval segments to categorize documents by using field values from a single numeric field to describe the + * category. + */ + export interface QueryAggregationQueryHistogramAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `histogram`. */ + type?: string; + /** The numeric field name used to create the histogram. */ + field: string; + /** The size of the sections that the results are split into. */ + interval: number; + /** Identifier that can optionally be specified in the query request of this aggregation. */ + name?: string; + /** Array of numeric intervals. */ + results?: QueryHistogramAggregationResult[]; + } + + /** + * A restriction that alters the document set that is used by the aggregations that it precedes. Subsequent + * aggregations are applied to nested documents from the specified field. + */ + export interface QueryAggregationQueryNestedAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `nested`. */ + type?: string; + /** The path to the document field to scope subsequent aggregations to. */ + path: string; + /** Number of nested documents found in the specified field. */ + matching_results: number; + /** An array of subaggregations. */ + aggregations?: JsonObject[]; + } + + /** + * Calculates relevancy values using combinations of document sets from results of the specified pair of aggregations. + */ + export interface QueryAggregationQueryPairAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `pair`. */ + type?: string; + /** Specifies the first aggregation in the pair. The aggregation must be a `term`, `group_by`, `histogram`, or + * `timeslice` aggregation type. + */ + first?: string; + /** Specifies the second aggregation in the pair. The aggregation must be a `term`, `group_by`, `histogram`, or + * `timeslice` aggregation type. + */ + second?: string; + /** Indicates whether to include estimated matching result information. */ + show_estimated_matching_results?: boolean; + /** Indicates whether to include total matching documents information. */ + show_total_matching_documents?: boolean; + /** An array of aggregations. */ + results?: QueryPairAggregationResult[]; + } + + /** + * Returns results from the field that is specified. + */ + export interface QueryAggregationQueryTermAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `term`. */ + type?: string; + /** The field in the document where the values come from. */ + field?: string; + /** The number of results returned. Not returned if `relevancy:true` is specified in the request. */ + count?: number; + /** Identifier specified in the query request of this aggregation. Not returned if `relevancy:true` is specified + * in the request. + */ + name?: string; + /** An array of results. */ + results?: QueryTermAggregationResult[]; + } + + /** + * A specialized histogram aggregation that uses dates to create interval segments. + */ + export interface QueryAggregationQueryTimesliceAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `timeslice`. */ + type?: string; + /** The date field name used to create the timeslice. */ + field: string; + /** The date interval value. Valid values are seconds, minutes, hours, days, weeks, and years. */ + interval: string; + /** Identifier that can optionally be specified in the query request of this aggregation. */ + name?: string; + /** Array of aggregation results. */ + results?: QueryTimesliceAggregationResult[]; + } + + /** + * Returns the top documents ranked by the score of the query. + */ + export interface QueryAggregationQueryTopHitsAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `top_hits`. */ + type?: string; + /** The number of documents to return. */ + size: number; + /** Identifier specified in the query request of this aggregation. */ + name?: string; + /** A query response that contains the matching documents for the preceding aggregations. */ + hits?: QueryTopHitsAggregationResult; + } + + /** + * Detects how much the frequency of a given facet value deviates from the expected average for the given time period. + * This aggregation type does not use data from previous time periods. It calculates an index by using the averages of + * frequency counts of other facet values for the given time period. + */ + export interface QueryAggregationQueryTopicAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `topic`. */ + type?: string; + /** Specifies the `term` or `group_by` aggregation for the facet that you want to analyze. */ + facet?: string; + /** Specifies the `timeslice` aggregation that defines the time segments. */ + time_segments?: string; + /** Indicates whether to include estimated matching result information. */ + show_estimated_matching_results?: boolean; + /** Indicates whether to include total matching documents information. */ + show_total_matching_documents?: boolean; + /** An array of aggregations. */ + results?: QueryTopicAggregationResult[]; + } + + /** + * Detects sharp and unexpected changes in the frequency of a facet or facet value over time based on the past history + * of frequency changes of the facet value. + */ + export interface QueryAggregationQueryTrendAggregation extends QueryAggregation { + /** Specifies that the aggregation type is `trend`. */ + type?: string; + /** Specifies the `term` or `group_by` aggregation for the facet that you want to analyze. */ + facet?: string; + /** Specifies the `timeslice` aggregation that defines the time segments. */ + time_segments?: string; + /** Indicates whether to include estimated matching result information. */ + show_estimated_matching_results?: boolean; + /** Indicates whether to include total matching documents information. */ + show_total_matching_documents?: boolean; + /** An array of aggregations. */ + results?: QueryTrendAggregationResult[]; + } +} + +export = DiscoveryV2; diff --git a/dist/.gitkeep b/dist/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000000..32e486cbc7 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,5 @@ +# Import Node base image (change version as needed) +FROM node:12-slim + +#Install the node SDK +RUN npm install ibm-watson diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000000..97a3204a2b --- /dev/null +++ b/docker/README.md @@ -0,0 +1,23 @@ +## Docker +You can use docker to test issues you have with the SDK. + +1. Install docker + - Mac: + - Windows: + +2. Download the dockerfile for this SDK and edit as needed. + - Change the node version as needed `FROM node:` + - For valid node base images on docker see + + - Copy code/file that you wish to test into the dockerfile + - Add line `COPY ... ` + + - Set dockerfile to execute code file + - Add line `CMD [ "" ]` + + - For more information on dockerfile construction please visit + +3. Build and run the docker image. + - Navigate to docker file directory + - To build the docker image run `docker build --tag= .` + - To run the docker image run `docker run ` diff --git a/document-conversion/v1.js b/document-conversion/v1.js deleted file mode 100644 index c697769998..0000000000 --- a/document-conversion/v1.js +++ /dev/null @@ -1,259 +0,0 @@ -/** - * Copyright 2014 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const isStream = require('isstream'); -const omit = require('object.omit'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * Document Conversion service - * @param {Object} options - * @constructor - */ -function DocumentConversionV1(options) { - BaseService.call(this, options); - - // Warn if not specifying version date - if (!this._options.version_date && !this._options.silent) { - // eslint-disable-next-line no-console - console.warn( - '[DocumentConversion] WARNING: No version_date specified. Using a (possibly old) default. ' + - 'e.g. watson.document_conversion({ version_date: "2015-12-15" })' - ); - } -} -util.inherits(DocumentConversionV1, BaseService); -DocumentConversionV1.prototype.name = 'document_conversion'; -DocumentConversionV1.prototype.version = 'v1'; -DocumentConversionV1.URL = 'https://gateway.watsonplatform.net/document-conversion/api'; -DocumentConversionV1.prototype.serviceDefaults = { - qs: { version: '2015-12-15' } -}; - -DocumentConversionV1.prototype.conversion_target = { - ANSWER_UNITS: 'answer_units', - NORMALIZED_HTML: 'normalized_html', - NORMALIZED_TEXT: 'normalized_text' -}; - -/** - * This sets up the content type "headers" in the form/multipart body (not in the actual headers) - * @private - * @param params - */ -function fixupContentType(params) { - if (params.content_type) { - params.file = { - value: params.file, - options: { - contentType: params.content_type - } - }; - } -} - -/** - * One-off convert an attached document OR convert a previously uploaded document by ID - * - * To convert a previously uploaded document, set params.document_id - * - * @param {Object} params - * @param {Object} params.conversion_target Must be set to one of ['answer_units', 'normalized_html', 'normalized_text'] - * @param {ReadableStream} [params.file] The document file to convert. May be a ReadableStream or Buffer - * @param {String} [params.content_type] Set this when the content type cannot be determined from the filename (params.file.path) - * @param {Object} [params.config] Optional configuration option. Recommended way to set configuration. - * @param {Function} callback - */ -DocumentConversionV1.prototype.convert = function(params, callback) { - params = params || {}; - if (typeof params.conversion_target === 'string') { - params.conversion_target = params.conversion_target.toLowerCase(); - } - const keys = Object.keys(DocumentConversionV1.prototype.conversion_target); - const values = keys.map(function(v) { - return DocumentConversionV1.prototype.conversion_target[v]; - }); - if (values.indexOf(params.conversion_target) === -1) { - callback(new Error('Missing required parameters: conversion_target. Possible values are: ' + values.join(', '))); - return; - } - - if (!params.file && !params.document_id) { - callback(new Error('Missing required parameters: either params.file or params.document_id must be specified')); - return; - } - - if (params.file && !isStream(params.file) && !Buffer.isBuffer(params.file) && !params.file.value) { - callback(new Error('Missing required parameters: file is not a standard Node.js Stream or Buffer')); - return; - } - - const parameters = { - options: { - method: 'POST', - url: '/v1/convert_document', - json: true - }, - defaultOptions: this._options - }; - - // send the parameters in the body or as formData depending on the request - if (params.file) { - fixupContentType(params); - parameters.options.formData = { - file: params.file, - config: { - value: JSON.stringify(params.config || omit(params, ['file', 'content_type'])), - options: { - contentType: 'application/json; charset=utf-8' - } - } - }; - } else { - parameters.options.body = params; - } - - return requestFactory(parameters, callback); -}; - -/** - * One-off convert and index a document via index_document API - * - * NOTE: A SOLR cluster and search collection will have to be created through the Retrieve and Rank - * service prior to using this API if actual indexing is performed (dry_run=false). - * - * @param {Object} params - * @param {ReadableStream} [params.file] The document file to convert. May be a ReadableStream or Buffer - * @param {Object} params.metadata Metadata array of Object's where each object contains 'name' and 'value' - * @param {Object} params.config Configuration for the conversion and indexing. The conversion config needs - to be in a 'convert_document' object. This can include configuration for 'pdf', 'word' - and 'normalized_html' phases of the conversion process. The indexing config needs to be - in a 'retrieve_and_rank' object. The 'retrieve_and_rank' object has the following fields: - 'dry_run' - boolean value, true if a dry run is to be performed, false to actually index, - 'service_instance_id' - The serviceGuid of your instance of the retrieve and rank - service (required if dry_run=false), 'cluster_id' - The Solr cluster id for your retrieve - and rank service instance (required if dry_run=false), 'search_collection' - The name of - your Solr search collection from your retrieve and rank service instance (required if - dry_run=false), and 'fields' - Configuration information for field 'mappings', fields - to 'include', and fields to 'exclude' during indexing (exclude takes precedence over include) - * @param {Function} callback - */ -DocumentConversionV1.prototype.index = function(params, callback) { - params = params || {}; - if (!params.file && !params.metadata) { - callback(new Error('Missing required parameters: file or metadata. At least one of those is required.')); - return; - } - if (params.file && !isStream(params.file) && !Buffer.isBuffer(params.file) && !params.file.value) { - callback(new Error('Missing required parameters: file is not a standard Node.js Stream or Buffer')); - return; - } - if (!params.config) { - callback(new Error('Missing required parameters: file or metadata. At least one of those is required.')); - return; - } - - const parameters = { - options: { - method: 'POST', - url: '/v1/index_document', - json: true - }, - defaultOptions: this._options - }; - - // send the parameters as formData - if (params.file && params.metadata) { - fixupContentType(params); - parameters.options.formData = { - file: params.file, - config: { - value: JSON.stringify(params.config), - options: { - contentType: 'application/json; charset=utf-8' - } - }, - metadata: { - value: JSON.stringify(params.metadata), - options: { - contentType: 'application/json; charset=utf-8' - } - } - }; - } else if (params.file) { - fixupContentType(params); - parameters.options.formData = { - file: params.file, - config: { - value: JSON.stringify(params.config), - options: { - contentType: 'application/json; charset=utf-8' - } - } - }; - } else if (params.metadata) { - parameters.options.formData = { - config: { - value: JSON.stringify(params.config), - options: { - contentType: 'application/json; charset=utf-8' - } - }, - metadata: { - value: JSON.stringify(params.metadata), - options: { - contentType: 'application/json; charset=utf-8' - } - } - }; - } else { - callback(new Error('Missing required parameters: file or metadata. At least one of those is required.')); - return; - } - - return requestFactory(parameters, callback); -}; - -// give a clear error message for the deprecated methods -[ - 'getOutput', - 'getOutputs', - 'getJobLog', - 'getJobs', - 'getJob', - 'createJob', - 'getBatchDocument', - 'getBatchDocuments', - 'addDocumentToBatch', - 'getDocument', - 'getDocuments', - 'uploadDocument', - 'getBatchDocuments', - 'updateBatch', - 'getBatch', - 'createBatch', - 'getBatches' -].forEach(function(name) { - DocumentConversionV1.prototype[name] = function deprecated() { - throw new Error('The DocumentConversion.' + name + '() method was deprecated and is no longer available, please use convert() instead.'); - }; -}); - -module.exports = DocumentConversionV1; diff --git a/examples/.eslintrc.js b/examples/.eslintrc.js deleted file mode 100644 index bbbb631580..0000000000 --- a/examples/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - "rules": { - "no-console": "off", - "node/no-missing-require": "off", - "require-jsdoc": "off", - "valid-jsdoc": "off", - "no-process-exit": "off" - } -}; diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000000..02771666dc --- /dev/null +++ b/examples/README.md @@ -0,0 +1,3 @@ +## IBM Watson Node SDK Examples + +The examples in this folder assume you already have [service credentials](https://github.com/watson-developer-cloud/node-sdk#getting-credentials). Go to the browserify or webpack folder for full READMEs on their respective examples. diff --git a/examples/alchemy_data_news.v1.js b/examples/alchemy_data_news.v1.js deleted file mode 100644 index 744b33ee57..0000000000 --- a/examples/alchemy_data_news.v1.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -const AlchemyDataNewsV1 = require('watson-developer-cloud/alchemy-data-news/v1'); - -const alchemy_data_news = new AlchemyDataNewsV1({ - api_key: '' -}); - -// News about company acquisitions in the past 24 hours: -// More information: http://docs.alchemyapi.com/docs/introduction -const params = { - start: 'now-1d', - end: 'now', - count: 100, - 'q.enriched.url.enrichedTitle.relations.relation': '|action.verb.text=acquire,object.entities.entity.type=Company|', - return: 'enriched.url.title' -}; - -alchemy_data_news.getNews(params, function(err, news) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(news, null, 2)); - } -}); diff --git a/examples/alchemy_language.v1.js b/examples/alchemy_language.v1.js deleted file mode 100644 index eb834b04ee..0000000000 --- a/examples/alchemy_language.v1.js +++ /dev/null @@ -1,252 +0,0 @@ -'use strict'; - -const AlchemyLanguageV1 = require('watson-developer-cloud/alchemy-language/v1'); -const alchemy_language = new AlchemyLanguageV1({ - api_key: 'API_KEY' -}); - -// Combined call -// ------------ -const parameters = { - extract: 'entities,keywords', - sentiment: 1, - maxRetrieve: 1, - url: 'https://www.ibm.com/us-en/' -}; - -alchemy_language.combined(parameters, function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } -}); -// Authors (using example.html from the same local directory) -// ------------ -// var fs = require('fs'); -// var html; -// var parameters = {}; -// fs.readFile('example.html', 'utf8', function (err, data) { -// if (err) { -// return console.log(err); -// } -// parameters = { -// 'html': data -// }; -// alchemy_language.authors(parameters, function (error, response) { -// if (error) -// console.log('error:', error); -// else -// console.log(JSON.stringify(response, null, 2)); -// }) -// }); -// Concepts -// ------------ -// var parameters = { -// url: 'http://www.ibm.com/watson', -// knowledgeGraph: 1 -// }; -// -// alchemy_language.concepts(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Date Extraction -// ------------ -// var parameters = { -// text: 'Set a reminder for my appointment next Tuesday', -// anchorDate: '2016-03-22 00:00:00' -// }; -// -// alchemy_language.dates(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Emotion Analysis -// ------------ -// var parameters = { -// url: 'http://www.charliechaplin.com/en/synopsis/articles/29-The-Great-Dictator-s-Speech' -// }; -// -// alchemy_language.emotion(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Entities -// ------------ -// var parameters = { -// url: 'http://www-03.ibm.com/press/us/en/pressrelease/49384.wss' -// }; -// -// alchemy_language.entities(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Feed Detection -// ------------ -// var parameters = { -// url: 'http://news.ycombinator.com' -// }; -// -// alchemy_language.feeds(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Keywords -// ------------ -// var parameters = { -// url: 'http://www.twitter.com/ibmwatson' -// }; -// -// alchemy_language.keywords(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Language Detection -// ------------ -// var parameters = { -// url: 'http://www.ibm.com/us-en/' -// }; -// -// alchemy_language.language(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Microformats -// ------------ -// var parameters = { -// url: 'http://www.ibm.com/us-en/' -// }; -// -// alchemy_language.microformats(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Publication date -// ------------ -// var parameters = { -// url: 'https://www.whitehouse.gov/the-press-office/2016/03/19/weekly-address-president-obamas-supreme-court-nomination' -// }; -// -// alchemy_language.publicationDate(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Relations -// ------------ -// var parameters = { -// url: 'https://www.whitehouse.gov/the-press-office/2016/03/19/weekly-address-president-obamas-supreme-court-nomination' -// }; -// -// alchemy_language.relations(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Typed Relations -// ------------ -// var parameters = { -// url: 'http://www.huffingtonpost.com/2010/06/22/iphone-4-review-the-worst_n_620714.html' -// }; -// -// alchemy_language.typedRelations(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Sentiment -// ------------ -// var parameters = { -// text: 'IBM Watson won the Jeopardy television show hosted by Alex Trebek' -// }; -// -// alchemy_language.sentiment(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Targeted Sentiment -// ------------ -// var parameters = { -// text: 'IBM Watson won the Jeopardy television show hosted by Alex Trebek', -// targets: [ -// 'IBM Watson' -// ] -// }; -// -// alchemy_language.sentiment(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Taxonomy -// ------------ -// var parameters = { -// url: 'cnn.com' -// }; -// -// alchemy_language.taxonomy(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Text extraction (cleaned) -// ------------ -// var parameters = { -// url: 'http://techcrunch.com/2016/01/29/ibm-watson-weather-company-sale' -// }; -// -// alchemy_language.text(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Text extraction (raw) -// ------------ -// var parameters = { -// url: 'http://techcrunch.com/2016/01/29/ibm-watson-weather-company-sale', -// raw: true -// }; -// -// alchemy_language.text(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); -// Title extraction -// ------------ -// var parameters = { -// url: 'http://techcrunch.com/2016/01/29/ibm-watson-weather-company-sale' -// }; -// -// alchemy_language.title(parameters, function (err, response) { -// if (err) -// console.log('error:', err); -// else -// console.log(JSON.stringify(response, null, 2)); -// }); diff --git a/examples/assistant.v1.js b/examples/assistant.v1.js new file mode 100644 index 0000000000..72618dc614 --- /dev/null +++ b/examples/assistant.v1.js @@ -0,0 +1,47 @@ +const AssistantV1 = require('ibm-watson/assistant/v1'); + +/** + * Instantiate the Watson Assistant Service + */ +const assistant = new AssistantV1({ + // See: https://github.com/watson-developer-cloud/node-sdk#authentication + version: '2020-04-01', +}); + +/** + * Calls the assistant message api. + * returns a promise + */ +const messageAsync = function (text, context) { + const payload = { + workspaceId: process.env.WORKSPACE_ID || '', + input: { + text: text, + }, + context: context, + }; + return assistant.message(payload); +}; + +// This example makes two successive calls to assistant service. +// Note how the context is passed: +// In the first message the context is undefined. The service starts a new assistant. +// The context returned from the first call is passed in the second request - to continue the assistant. +messageAsync('first message', undefined) + .then(response1 => { + // APPLICATION-SPECIFIC CODE TO PROCESS THE DATA + // FROM ASSISTANT SERVICE + console.log(JSON.stringify(response1.result, null, 2), '\n--------'); + + // invoke a second call to assistant + return messageAsync('second message', response1.result.context); + }) + .then(response2 => { + console.log(JSON.stringify(response2.result, null, 2), '\n--------'); + console.log('Note that the two reponses should have the same context.conversation_id'); + }) + .catch(error => { + // APPLICATION-SPECIFIC CODE TO PROCESS THE ERROR + // FROM ASSISTANT SERVICE + console.error(JSON.stringify(error, null, 2)); + }); diff --git a/examples/browserify/.env.example b/examples/browserify/.env.example new file mode 100644 index 0000000000..739897532f --- /dev/null +++ b/examples/browserify/.env.example @@ -0,0 +1,2 @@ +TONE_ANALYZER_APIKEY=kcLLX123ghgjVSdM9Basdadasda90IesOrCIywWr0rNLo +TONE_ANALYZER_URL=https://api.us-east.tone-analyzer.watson.cloud.ibm.com diff --git a/examples/browserify/README.md b/examples/browserify/README.md index c241c44aa1..90b3c52f4c 100644 --- a/examples/browserify/README.md +++ b/examples/browserify/README.md @@ -7,27 +7,16 @@ The example here uses [express](http://expressjs.com/) to serve the content and ## Important notes -A server-side component is required to generate auth tokens for services that use a username/password combo. -(This is all services except Alchemy and Visual Recognition which use API keys instead.) +A server-side component is required to generate auth tokens for services that use an IAM apikey. Not all Watson services currently support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS), and in some cases, certain methods work while others do not. Below is a partial list of service support: The following services support CORS - * Tradeoff Analytics - * Tone Analyzer - * Speech to Text* - * Text to Speech* - * Personality Insights - * Document Conversion - * All Alchemy services +- Speech to Text\* +- Text to Speech\* +- Natural Language Understanding +- Watson Assistant \* Speech to Text and Text to Speech should be usable via the Node.js SDK, but we also have a [Speech JavaScript SDK](https://www.npmjs.com/package/watson-speech) that was specifically written for browser support. - - -The following services do not support CORS - - * Language Translator - * Visual Recognition (partial support) - * Retrieve and Rank diff --git a/examples/browserify/package-lock.json b/examples/browserify/package-lock.json new file mode 100644 index 0000000000..440cbc3e81 --- /dev/null +++ b/examples/browserify/package-lock.json @@ -0,0 +1,3754 @@ +{ + "name": "watson-developer-cloud-browserify-example", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/async": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/async/-/async-2.4.2.tgz", + "integrity": "sha512-bWBbC7VG2jdjbgZMX0qpds8U/3h3anfIqE81L8jmVrgFZw/urEDnBA78ymGGKTTK6ciBXmmJ/xlok+Re41S8ww==" + }, + "@types/extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.1.tgz", + "integrity": "sha512-R1g/VyKFFI2HLC1QGAeTtCBWCo6n75l41OnsVYNbmKG+kempOESaodf6BeJyUM3Q0rKa/NQcTHbB2+66lNnxLw==" + }, + "@types/file-type": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/file-type/-/file-type-5.2.2.tgz", + "integrity": "sha512-GWtM4fyqfb+bec4ocpo51/y4x0b83Je+iA6eV131LT9wL0//G+1UgwbkMg7w61ceOwR+KkZXK00z44jrrNljWg==", + "requires": { + "@types/node": "*" + } + }, + "@types/isstream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@types/isstream/-/isstream-0.1.0.tgz", + "integrity": "sha512-jo6R5XtVMgu1ej3H4o9NXiUE/4ZxyxmDrGslGiBa4/ugJr+Olw2viio/F2Vlc+zrwC9HJzuApOCCVC2g5jqV0w==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/node": { + "version": "11.15.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.15.12.tgz", + "integrity": "sha512-iefeBfpmhoYaZfj+gJM5z9H9eiTwhuzhPsJgH/flx4HP2SBI2FNDra1D3vKljqPLGDr9Cazvh9gP9Xszc30ncA==" + }, + "@types/tough-cookie": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.7.tgz", + "integrity": "sha512-rMQbgMGxnLsdn8e9aPVyuN+zMQLrZ2QW8xlv7eWS1mydfGXN+tsTKffcIzd8rGCcLdmi3xvQw2MDaZI1bBNTaw==" + }, + "@types/websocket": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.0.tgz", + "integrity": "sha512-MLr8hDM8y7vvdAdnoDEP5LotRoYJj7wgT6mWzCUQH/gHqzS4qcnOT/K4dhC0WimWIUiA3Arj9QAJGGKNRiRZKA==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==" + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "axios": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "axios-cookiejar-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/axios-cookiejar-support/-/axios-cookiejar-support-0.5.1.tgz", + "integrity": "sha512-mmMbNDjpkAKlyxVOYjkpvV6rDRoSjBXwHbfkWvnsplRTGYCergbHvZInRB1G3lqumllUQwo0A4uPoqEsYfzq3A==", + "requires": { + "@types/tough-cookie": "^2.3.3", + "is-redirect": "^1.0.0", + "pify": "^4.0.0", + "tough-cookie": "^3.0.1" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserify": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.1.tgz", + "integrity": "sha512-EQX0h59Pp+0GtSRb5rL6OTfrttlzv+uyaUVlK6GX3w11SQ0jKPKyjC/54RhPR2ib2KmfcELM06e8FxcI5XNU2A==", + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.0.0", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cached-path-relative": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", + "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "requires": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "express-browserify": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/express-browserify/-/express-browserify-1.0.3.tgz", + "integrity": "sha512-eTqGLag8NjkN+Q6LTDfaGI7iO6M5Ykd3Mtcbd5XZKaCT5haWU8RxqR8XRg5yk0lG9nSySr8r+AGzmdMsLr9h3g==", + "requires": { + "browserify": "^16.2.3", + "lodash": "^4.17.11", + "typed-args": "^1.0.0", + "watchify": "^3.11.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, + "file-type": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-7.7.1.tgz", + "integrity": "sha512-bTrKkzzZI6wH+NXhyD3SOXtb2zXTw2SbwI2RxUlRcXVsnN7jNL5hJzVQLYv7FOQhxFkK4XWdAflEaWFpaLLWpQ==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "optional": 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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "ibm-cloud-sdk-core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-2.3.2.tgz", + "integrity": "sha512-EkS3YfKWhf9h63EAV7cE8eyeEf6SEDMWILuKGdVj9BtGU0FjodOv/6kFp8RjU5En5SWbogtX8Bzqx/FX1BtQUg==", + "requires": { + "@types/extend": "~3.0.0", + "@types/file-type": "~5.2.1", + "@types/isstream": "^0.1.0", + "@types/jest": "^24.0.23", + "@types/node": "~10.14.19", + "axios": "^0.18.0", + "axios-cookiejar-support": "^0.5.1", + "camelcase": "^5.3.1", + "debug": "^4.1.1", + "dotenv": "^6.2.0", + "extend": "~3.0.2", + "file-type": "^7.7.1", + "form-data": "^2.3.3", + "isstream": "~0.1.2", + "jsonwebtoken": "^8.5.1", + "lodash.isempty": "^4.4.0", + "mime-types": "~2.1.18", + "object.omit": "~3.0.0", + "object.pick": "~1.3.0", + "semver": "^6.2.0", + "ts-jest": "^24.2.0" + }, + "dependencies": { + "@types/node": { + "version": "10.14.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.22.tgz", + "integrity": "sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ibm-watson": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ibm-watson/-/ibm-watson-5.5.0.tgz", + "integrity": "sha512-gcijKSFTOMLcjEnSpeUa4/31naeMSZsz8t/wYNrR5c8gp1VN9LbJ3vhn3nFislfLYopTkNnWzya7w8oMhW4SGg==", + "requires": { + "@types/async": "^2.4.2", + "@types/extend": "^3.0.1", + "@types/isstream": "^0.1.0", + "@types/node": "^11.9.4", + "@types/websocket": "^1.0.0", + "async": "^2.6.2", + "axios": "^0.18.0", + "camelcase": "^5.3.1", + "extend": "~3.0.2", + "ibm-cloud-sdk-core": "^2.0.3", + "isstream": "~0.1.2", + "websocket": "^1.0.28" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "requires": { + "source-map": "~0.5.3" + } + }, + "insert-module-globals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", + "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", + "requires": { + "JSONStream": "^1.0.3", + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "labeled-stream-splicer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", + "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "requires": { + "inherits": "^2.0.1", + "stream-splicer": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "module-deps": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.2.tgz", + "integrity": "sha512-a9y6yDv5u5I4A+IPHTnqFxcaKr4p50/zxTjcQJaX2ws9tN/W6J6YXnEKhqRyPhl494dkcxx951onSKVezmI+3w==", + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.omit": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", + "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", + "requires": { + "is-extendable": "^1.0.0" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "outpipe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", + "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", + "requires": { + "shell-quote": "^1.4.2" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "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=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "requires": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "requires": { + "fast-safe-stringify": "^2.0.7" + } + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.0.tgz", + "integrity": "sha512-cuB6RgO7BqC4FBYzmnvhob5Do3wIdIsXAgGycHJnW+981gHqoYcYz9lqjJrk8WXRddbwPuqPYRl+bag6mYv4lw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^3.0.6", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", + "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "requires": { + "minimist": "^1.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "requires": { + "acorn-node": "^1.2.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "~0.11.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "ts-jest": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.3.0.tgz", + "integrity": "sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ==", + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-args": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-args/-/typed-args-1.0.0.tgz", + "integrity": "sha1-myjz82vA7kRwv7xxI42XJYMnleU=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "umd": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", + "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" + }, + "undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "requires": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "watchify": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.11.1.tgz", + "integrity": "sha512-WwnUClyFNRMB2NIiHgJU9RQPQNqVeFk7OmZaWf5dC5EnNa0Mgr7imBydbaJ7tGTuPM2hz1Cb4uiBvK9NVxMfog==", + "requires": { + "anymatch": "^2.0.0", + "browserify": "^16.1.0", + "chokidar": "^2.1.1", + "defined": "^1.0.0", + "outpipe": "^1.1.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "websocket": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz", + "integrity": "sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ==", + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + } + } +} diff --git a/examples/browserify/package.json b/examples/browserify/package.json index a29a11226e..186a54a39f 100644 --- a/examples/browserify/package.json +++ b/examples/browserify/package.json @@ -9,13 +9,13 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "dotenv": "^2.0.0", + "dotenv": "^8.2.0", "express": "^4.14.0", "express-browserify": "^1.0.2", - "watson-developer-cloud": "^2.7.1" + "ibm-watson": "latest" }, "devDependencies": {}, "engines": { - "node": ">=4" + "node": ">=12" } } diff --git a/examples/browserify/public/client.js b/examples/browserify/public/client.js index c26e0ebb2c..d99f3c6e64 100644 --- a/examples/browserify/public/client.js +++ b/examples/browserify/public/client.js @@ -1,49 +1,55 @@ +/* eslint-disable require-jsdoc */ 'use strict'; // notes: // // * This file is bundled by exprss-browserify into bundle.js // -// * The require('watson-developer-cloud/language_translator/v2') could also be written as require('watson-developer-cloud').LanguageTranslatorV2, +// * The require('ibm-watson/language_translator/v3') could also be written as require('ibm-watson').LanguageTranslatorV3, // but that version results in a much larger bundle size. // // * Tokens expire after 1 hour. This demo simply fetches a new one for each translation rather than keeping a fresh one. // // * fetch() is a modern version of XMLHttpRequest. A pollyfill is available for older browsers: https://github.com/github/fetch -var ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3'); +const TextToSpeechV1 = require('ibm-watson/text-to-speech/v1'); +const { BearerTokenAuthenticator } = require('ibm-watson/auth'); +const fs = require('fs'); -var btn = document.getElementById('analyze-btn'); -var input = document.getElementById('input'); -var output = document.getElementById('output'); +const btn = document.getElementById('analyze-btn'); /** * @return {Promise} returns a promise that resolves to a string token */ function getToken() { - return fetch('/api/token/tone_analyzer').then(function(response) { - return response.text(); - }); + return fetch('/api/token').then(resp => resp.json()); } -function analyze(token) { - const toneAnalyzer = new ToneAnalyzerV3({ - token: token, - version_date: '2016-05-19' +function analyze(credentials) { + const textToSpeech = new TextToSpeechV1({ + authenticator: new BearerTokenAuthenticator({ + bearerToken: credentials.accessToken, + }), + url: credentials.url, + version: '2023-03-31', }); - toneAnalyzer.tone( - { - text: input.value - }, - function(err, result) { - if (err) { - output.innerHTML = err; - return console.log(err); - } - output.innerHTML = JSON.stringify(result, null, 2); - } - ); + + const synthesizeParams = { + text: 'Hello from IBM Watson', + accept: 'audio/mp3', + voice: 'en-US_AllisonVoice', + }; + + textToSpeech + .synthesize(synthesizeParams) + .then(response => { + const audio = response.result; + audio.pipe(fs.createWriteStream('hello_world.mp3')); + }) + .catch(err => { + console.log('error:', err); + }); } -btn.onclick = function() { +btn.onclick = function () { getToken().then(analyze); }; diff --git a/examples/browserify/server.js b/examples/browserify/server.js index 960b77aa1e..8f94eda86a 100644 --- a/examples/browserify/server.js +++ b/examples/browserify/server.js @@ -1,42 +1,40 @@ -'use strict'; -const express = require('express'); // eslint-disable-line node/no-missing-require +require('dotenv').config({ silent: true }); + +const express = require('express'); const app = express(); -const expressBrowserify = require('express-browserify'); // eslint-disable-line node/no-missing-require -const dotenv = require('dotenv'); -const watson = require('watson-developer-cloud'); +const expressBrowserify = require('express-browserify'); +const { IamTokenManager } = require('ibm-watson/auth'); + +if (!process.env.TONE_ANALYZER_APIKEY) { + console.log('This example requires the TONE_ANALYZER_APIKEY environment variable'); + process.exit(1); +} + +const toneAuthenticator = new IamTokenManager({ + apikey: process.env.TONE_ANALYZER_APIKEY, +}); const isDev = app.get('env') === 'development'; app.get( '/bundle.js', expressBrowserify('public/client.js', { watch: isDev, - debug: isDev + debug: isDev, }) ); app.use(express.static('public/')); -// optional: load environment properties from a .env file -dotenv.load({ silent: true }); - -// For local development, specify the username and password or set env properties -const ltAuthService = new watson.AuthorizationV1({ - username: process.env.TONE_ANALYZER_USERNAME || '', - password: process.env.TONE_ANALYZER_PASSWORD || '', - url: watson.ToneAnalyzerV3.URL -}); - -app.get('/api/token/tone_analyzer', function(req, res) { - ltAuthService.getToken(function(err, token) { - if (err) { - console.log('Error retrieving token: ', err); - return res.status(500).send('Error retrieving token'); - } - res.send(token); - }); +app.get('/api/token', function (req, res) { + return toneAuthenticator + .requestToken() + .then(({ result }) => { + res.json({ accessToken: result.access_token, url: process.env.TONE_ANALYZER_URL }); + }) + .catch(console.error); }); const port = process.env.PORT || process.env.VCAP_APP_PORT || 3000; -app.listen(port, function() { +app.listen(port, function () { console.log('Watson browserify example server running at http://localhost:%s/', port); }); diff --git a/examples/conversation.v1.js b/examples/conversation.v1.js deleted file mode 100644 index d0e08f4a46..0000000000 --- a/examples/conversation.v1.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; -/* eslint-env es6*/ - -const watson = require('watson-developer-cloud'); - -/** - * Instantiate the Watson Conversation Service - */ -const conversation = new watson.ConversationV1({ - username: process.env.CONVERSATION_USERNAME || '', - password: process.env.CONVERSATION_PASSWORD || '', - version_date: watson.ConversationV1.VERSION_DATE_2017_05_26 -}); - -/** - * Calls the conversation message api. - * returns a promise - */ -const message = function(text, context) { - const payload = { - workspace_id: process.env.WORKSPACE_ID || '', - input: { - text: text - }, - context: context - }; - return new Promise((resolve, reject) => - conversation.message(payload, function(err, data) { - if (err) { - reject(err); - } else { - resolve(data); - } - }) - ); -}; - -// This example makes two successive calls to conversation service. -// Note how the context is passed: -// In the first message the context is undefined. The service starts a new conversation. -// The context returned from the first call is passed in the second request - to continue the conversation. -message('first message', undefined) - .then(response1 => { - // APPLICATION-SPECIFIC CODE TO PROCESS THE DATA - // FROM CONVERSATION SERVICE - console.log(JSON.stringify(response1, null, 2), '\n--------'); - - // invoke a second call to conversation - return message('second message', response1.context); - }) - .then(response2 => { - console.log(JSON.stringify(response2, null, 2), '\n--------'); - console.log('Note that the two reponses should have the same context.conversation_id'); - }) - .catch(err => { - // APPLICATION-SPECIFIC CODE TO PROCESS THE ERROR - // FROM CONVERSATION SERVICE - console.error(JSON.stringify(err, null, 2)); - }); diff --git a/examples/conversation_tone_analyzer_integration/.env.example b/examples/conversation_tone_analyzer_integration/.env.example deleted file mode 100644 index bddee02569..0000000000 --- a/examples/conversation_tone_analyzer_integration/.env.example +++ /dev/null @@ -1,9 +0,0 @@ -# see README.md for details - -CONVERSATION_USERNAME= -CONVERSATION_PASSWORD= -WORKSPACE_ID= - -TONE_ANALYZER_USERNAME= -TONE_ANALYZER_PASSWORD= - diff --git a/examples/conversation_tone_analyzer_integration/.gitignore b/examples/conversation_tone_analyzer_integration/.gitignore deleted file mode 100644 index 37d7e73486..0000000000 --- a/examples/conversation_tone_analyzer_integration/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.env diff --git a/examples/conversation_tone_analyzer_integration/README.md b/examples/conversation_tone_analyzer_integration/README.md deleted file mode 100644 index ad05cff340..0000000000 --- a/examples/conversation_tone_analyzer_integration/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Conversation and Tone Analyzer Integration Example - -This example provides sample code for integrating [Tone Analyzer][tone_analyzer] and [Conversation][conversation]. - - * [tone_detection.js][tone_conversation_integration_example_tone_detection] - sample code to initialize a user object in the conversation payload's context (initUser), to call Tone Analyzer to retrieve tone for a user's input (invokeToneAsync), and to update tone in the user object in the conversation payload's context (updateUserTone). - - * [tone_conversation_integration.v1.js][tone_conversation_integration_example] - sample code to use tone_detection.js to get and add tone to the payload and send a request to the Conversation Service's message endpoint. - - -Requirements to run the sample code - - * [Tone Analyzer Service credentials][bluemix_tone_analyzer_service] - * [Conversation Service credentials][bluemix_conversation_service] - * [Conversation Workspace ID][conversation_simple_workspace] - -Credentials & the Workspace ID can be set in environment properties, a .env file, or directly in the code. - - -Command to run the sample code - -`npm install # just once, to download dependencies` -`node tone_conversation_integration.v1.js` - -[conversation]: https://www.ibm.com/watson/developercloud/conversation.html -[tone_analyzer]: http://www.ibm.com/watson/developercloud/tone-analyzer.html -[bluemix_conversation_service]: https://console.ng.bluemix.net/catalog/services/conversation/ -[bluemix_tone_analyzer_service]: https://console.ng.bluemix.net/catalog/services/tone-analyzer/ -[conversation_simple_workspace]: https://github.com/watson-developer-cloud/conversation-simple#workspace -[tone_conversation_integration_example]: https://github.com/watson-developer-cloud/node-sdk/tree/master/examples/tone_conversation_integration.v1.js -[tone_conversation_integration_example_tone_detection]: https://github.com/watson-developer-cloud/node-sdk/tree/master/examples/conversation_addons/tone_detection.js diff --git a/examples/conversation_tone_analyzer_integration/package.json b/examples/conversation_tone_analyzer_integration/package.json deleted file mode 100644 index 610389b487..0000000000 --- a/examples/conversation_tone_analyzer_integration/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "conversation_tone_analyzer_integration", - "version": "1.0.0", - "description": "Example combining the Watson Conversation and Tone Analyzer services", - "main": "tone_conversation_integration.v1.js", - "author": "https://github.com/aprilwebster", - "license": "Apache-2.0", - "dependencies": { - "bluebird": "^3.4.1", - "dotenv": "^2.0.0", - "watson-developer-cloud": "^2.0.3" - }, - "engines": { - "node": ">=4" - } -} diff --git a/examples/conversation_tone_analyzer_integration/tone_conversation_integration.v1.js b/examples/conversation_tone_analyzer_integration/tone_conversation_integration.v1.js deleted file mode 100644 index 4b073e756b..0000000000 --- a/examples/conversation_tone_analyzer_integration/tone_conversation_integration.v1.js +++ /dev/null @@ -1,104 +0,0 @@ -/** - * Tone Analyzer integration with Conversation - * - * This example demonstrates how to detect and interpret the tone for a user's input (a conversation turn) - * using the Tone Analyzer Service, and add it to the payload to be sent in a request to the Conversation - * Service API message endpoint. - * - * Service credentials can be provided directly in this file, or can be saved to a .env file located in the - * same directory. - * - * Requirements: - * 1. Tone Analyzer Service instance: - * - https://console.ng.bluemix.net/catalog/services/tone-analyzer/ - * - credentials for this service to be provided below in tone_analyzer variable - * - replace and - * 2. Conversation Service instance: - * - https://console.ng.bluemix.net/catalog/services/conversation/ - * - credentials for this service to be provided below in the conversation variable - * - replace and - * 3. Workspace id: - * - a workspace containing intents, entities and dialog nodes must be created using the tool - * available through the Bluemix Conversation Service. Details are available at - * https://github.com/watson-developer-cloud/conversation-simple#workspace - * - replace in the payload variable - * - * Run the code using the command: - * node tone_conversation_integration.v1.js - */ - -'use strict'; -/* eslint-env es6*/ - -const watson = require('watson-developer-cloud'); -const tone_detection = require('./tone_detection.js'); -require('dotenv').config({ silent: true }); - -/** - * Instantiate the Watson Conversation Service - */ -const conversation = new watson.ConversationV1({ - username: process.env.CONVERSATION_USERNAME || '', - password: process.env.CONVERSATION_PASSWORD || '', - version_date: watson.ConversationV1.VERSION_DATE_2016_09_20 -}); - -/** - * Instantiate the Watson Tone Analyzer Service - */ -const tone_analyzer = new watson.ToneAnalyzerV3({ - username: process.env.TONE_ANALYZER_USERNAME || '', - password: process.env.TONE_ANALYZER_PASSWORD || '', - version_date: '2016-05-19' -}); - -/** - * This example stores tone for each user utterance in conversation context. - * Change this to false, if you do not want to maintain history - */ -const maintainToneHistoryInContext = true; - -/** - * Payload for the Watson Conversation Service - * and user input text required. - */ -const payload = { - workspace_id: process.env.WORKSPACE_ID || '', - input: { - text: 'I am not happy today :(' - } -}; - -/** - * invokeToneConversation calls the invokeToneAsync function to get the tone information for the user's - * input text (input.text in the payload json object), adds/updates the user's tone in the payload's context, - * and sends the payload to the conversation service to get a response which is printed to screen. - * @param payload a json object containing the basic information needed to converse with the Conversation Service's - * message endpoint. - * - * Note: as indicated below, the console.log statements can be replaced with application-specific code to process - * the err or data object returned by the Conversation Service. - */ -function invokeToneConversation(payload, maintainToneHistoryInContext) { - tone_detection - .invokeToneAsync(payload, tone_analyzer) - .then(tone => { - tone_detection.updateUserTone(payload, tone, maintainToneHistoryInContext); - conversation.message(payload, function(err, data) { - if (err) { - // APPLICATION-SPECIFIC CODE TO PROCESS THE ERROR - // FROM CONVERSATION SERVICE - console.error(JSON.stringify(err, null, 2)); - } else { - // APPLICATION-SPECIFIC CODE TO PROCESS THE DATA - // FROM CONVERSATION SERVICE - console.log(JSON.stringify(data, null, 2)); - } - }); - }) - .catch(function(err) { - console.log(JSON.stringify(err, null, 2)); - }); -} - -invokeToneConversation(payload, maintainToneHistoryInContext); diff --git a/examples/conversation_tone_analyzer_integration/tone_detection.js b/examples/conversation_tone_analyzer_integration/tone_detection.js deleted file mode 100644 index cea4c676e5..0000000000 --- a/examples/conversation_tone_analyzer_integration/tone_detection.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; -/* eslint-env es6*/ - -const Promise = require('bluebird'); - -/** - * Thresholds for identifying meaningful tones returned by the Watson Tone Analyzer. Current values are - * based on the recommendations made by the Watson Tone Analyzer at - * https://www.ibm.com/watson/developercloud/doc/tone-analyzer/understanding-tone.shtml - * These thresholds can be adjusted to client/domain requirements. - */ -const PRIMARY_EMOTION_SCORE_THRESHOLD = 0.5; -const LANGUAGE_HIGH_SCORE_THRESHOLD = 0.75; -const LANGUAGE_NO_SCORE_THRESHOLD = 0.0; -const SOCIAL_HIGH_SCORE_THRESHOLD = 0.75; -const SOCIAL_LOW_SCORE_THRESHOLD = 0.25; - -/** - * Labels for the tone categories returned by the Watson Tone Analyzer - */ -const EMOTION_TONE_LABEL = 'emotion_tone'; -const LANGUAGE_TONE_LABEL = 'language_tone'; -const SOCIAL_TONE_LABEL = 'social_tone'; - -/** - * Public functions for this module - */ -module.exports = { - updateUserTone: updateUserTone, - invokeToneAsync: invokeToneAsync -}; - -/** - * invokeToneAsync is an asynchronous function that calls the Tone Analyzer service and returns a Promise - * @param conversationPayload json object returned by the Watson Conversation Service - * @param tone_analyzer an instance of the Watson Tone Analyzer service - * @return a Promise for the result of calling the tone_analyzer with the conversationPayload - * (which contains the user's input text) - */ -function invokeToneAsync(conversationPayload, tone_analyzer) { - return new Promise(function(resolve, reject) { - tone_analyzer.tone({ text: conversationPayload.input.text }, (error, data) => { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - }); -} - -/** - * updateUserTone processes the Tone Analyzer payload to pull out the emotion, language and social - * tones, and identify the meaningful tones (i.e., those tones that meet the specified thresholds). - * The conversationPayload json object is updated to include these tones. - * @param conversationPayload json object returned by the Watson Conversation Service - * @param toneAnalyzerPayload json object returned by the Watson Tone Analyzer Service - * @return conversationPayload where the user object has been updated with tone information from the toneAnalyzerPayload - */ -function updateUserTone(conversationPayload, toneAnalyzerPayload, maintainHistory) { - let emotionTone = null; - let languageTone = null; - let socialTone = null; - - if (typeof conversationPayload.context === 'undefined') { - conversationPayload.context = {}; - } - - if (typeof conversationPayload.context.user === 'undefined') { - conversationPayload.context = initUser(); - } - - // For convenience sake, define a variable for the user object - const user = conversationPayload.context.user; - - // Extract the tones - emotion, language and social - if (toneAnalyzerPayload && toneAnalyzerPayload.document_tone) { - toneAnalyzerPayload.document_tone.tone_categories.forEach(function(toneCategory) { - if (toneCategory.category_id === EMOTION_TONE_LABEL) { - emotionTone = toneCategory; - } - if (toneCategory.category_id === LANGUAGE_TONE_LABEL) { - languageTone = toneCategory; - } - if (toneCategory.category_id === SOCIAL_TONE_LABEL) { - socialTone = toneCategory; - } - }); - - updateEmotionTone(user, emotionTone, maintainHistory); - updateLanguageTone(user, languageTone, maintainHistory); - updateSocialTone(user, socialTone, maintainHistory); - } - - conversationPayload.context.user = user; - - return conversationPayload; -} - -/** - * initToneContext initializes a user object containing tone data (from the Watson Tone Analyzer) - * @return user json object with the emotion, language and social tones. The current - * tone identifies the tone for a specific conversation turn, and the history provides the conversation for - * all tones up to the current tone for a conversation instance with a user. - */ -function initUser() { - return { - user: { - tone: { - emotion: { - current: null - }, - language: { - current: null - }, - social: { - current: null - } - } - } - }; -} - -/** - * updateEmotionTone updates the user emotion tone with the primary emotion - the emotion tone that has - * a score greater than or equal to the EMOTION_SCORE_THRESHOLD; otherwise primary emotion will be 'neutral' - * @param user a json object representing user information (tone) to be used in conversing with the Conversation Service - * @param emotionTone a json object containing the emotion tones in the payload returned by the Tone Analyzer - */ -function updateEmotionTone(user, emotionTone, maintainHistory) { - let maxScore = 0.0; - let primaryEmotion = null; - let primaryEmotionScore = null; - - emotionTone.tones.forEach(function(tone) { - if (tone.score > maxScore) { - maxScore = tone.score; - primaryEmotion = tone.tone_name.toLowerCase(); - primaryEmotionScore = tone.score; - } - }); - - if (maxScore <= PRIMARY_EMOTION_SCORE_THRESHOLD) { - primaryEmotion = 'neutral'; - primaryEmotionScore = null; - } - - // update user emotion tone - user.tone.emotion.current = primaryEmotion; - - if (maintainHistory) { - if (typeof user.tone.emotion.history === 'undefined') { - user.tone.emotion.history = []; - } - user.tone.emotion.history.push({ - tone_name: primaryEmotion, - score: primaryEmotionScore - }); - } -} - -/** - * updateLanguageTone updates the user with the language tones interpreted based on the specified thresholds - * @param user a json object representing user information (tone) to be used in conversing with the Conversation Service - * @param languageTone a json object containing the language tones in the payload returned by the Tone Analyzer - */ -function updateLanguageTone(user, languageTone, maintainHistory) { - const currentLanguage = []; - const currentLanguageObject = []; - - // Process each language tone and determine if it is high or low - languageTone.tones.forEach(function(tone) { - if (tone.score >= LANGUAGE_HIGH_SCORE_THRESHOLD) { - currentLanguage.push(tone.tone_name.toLowerCase() + '_high'); - currentLanguageObject.push({ - tone_name: tone.tone_name.toLowerCase(), - score: tone.score, - interpretation: 'likely high' - }); - } else if (tone.score <= LANGUAGE_NO_SCORE_THRESHOLD) { - currentLanguageObject.push({ - tone_name: tone.tone_name.toLowerCase(), - score: tone.score, - interpretation: 'no evidence' - }); - } else { - currentLanguageObject.push({ - tone_name: tone.tone_name.toLowerCase(), - score: tone.score, - interpretation: 'likely medium' - }); - } - }); - - // update user language tone - user.tone.language.current = currentLanguage; - if (maintainHistory) { - if (typeof user.tone.language.history === 'undefined') { - user.tone.language.history = []; - } - user.tone.language.history.push(currentLanguageObject); - } -} - -/** - * updateSocialTone updates the user with the social tones interpreted based on the specified thresholds - * @param user a json object representing user information (tone) to be used in conversing with the Conversation Service - * @param socialTone a json object containing the social tones in the payload returned by the Tone Analyzer - */ -function updateSocialTone(user, socialTone, maintainHistory) { - const currentSocial = []; - const currentSocialObject = []; - - // Process each social tone and determine if it is high or low - socialTone.tones.forEach(function(tone) { - if (tone.score >= SOCIAL_HIGH_SCORE_THRESHOLD) { - currentSocial.push(tone.tone_name.toLowerCase() + '_high'); - currentSocialObject.push({ - tone_name: tone.tone_name.toLowerCase(), - score: tone.score, - interpretation: 'likely high' - }); - } else if (tone.score <= SOCIAL_LOW_SCORE_THRESHOLD) { - currentSocial.push(tone.tone_name.toLowerCase() + '_low'); - currentSocialObject.push({ - tone_name: tone.tone_name.toLowerCase(), - score: tone.score, - interpretation: 'likely low' - }); - } else { - currentSocialObject.push({ - tone_name: tone.tone_name.toLowerCase(), - score: tone.score, - interpretation: 'likely medium' - }); - } - }); - - // update user social tone - user.tone.social.current = currentSocial; - if (maintainHistory) { - if (typeof user.tone.social.history === 'undefined') { - user.tone.social.history = []; - } - user.tone.social.history.push(currentSocialObject); - } -} diff --git a/examples/dialog.v1.js b/examples/dialog.v1.js deleted file mode 100644 index d87c61b1ef..0000000000 --- a/examples/dialog.v1.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -const DialogV1 = require('watson-developer-cloud/dialog/v1'); - -const dialog = new DialogV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -dialog.getDialogs({}, function(err, dialogs) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(dialogs, null, 2)); - } -}); diff --git a/examples/discovery.v1-experimental.js b/examples/discovery.v1-experimental.js deleted file mode 100644 index 9cd7a4fec7..0000000000 --- a/examples/discovery.v1-experimental.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -const DiscoveryV1Experimental = require('watson-developer-cloud/discovery/v1-experimental'); - -const discovery = new DiscoveryV1Experimental({ - // if left unspecified here, the SDK will fall back to the DISCOVERY_USERNAME and DISCOVERY_PASSWORD - // environment properties, and then Bluemix's VCAP_SERVICES environment property - // username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - // password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' - version_date: DiscoveryV1Experimental.VERSION_DATE_2016_07_11 -}); - -discovery.getEnvironments({}, function(error, data) { - console.log(JSON.stringify(data, null, 2)); -}); diff --git a/examples/discovery.v1.js b/examples/discovery.v1.js deleted file mode 100644 index cf60965273..0000000000 --- a/examples/discovery.v1.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -const DiscoveryV1 = require('watson-developer-cloud/discovery/v1'); -const fs = require('fs'); - -const discovery = new DiscoveryV1({ - // if left unspecified here, the SDK will fall back to the DISCOVERY_USERNAME and DISCOVERY_PASSWORD - // environment properties, and then Bluemix's VCAP_SERVICES environment property - // username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - // password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' - username: 'YOUR USERNAME', - password: 'YOUR PASSWORD', - version_date: DiscoveryV1.VERSION_DATE_2017_04_27 -}); - -discovery.getEnvironments({}, function(error, data) { - console.log(JSON.stringify(data, null, 2)); -}); - -// var file = fs.readFileSync('../test/resources/sampleHtml.html'); -const file = fs.createReadStream('../test/resources/sampleWord.docx'); - -discovery.addDocument( - { - environment_id: 'YOUR ENVIRONMENT ID', - collection_id: 'YOUR COLLECTION ID', - file: file - }, - function(error, data) { - console.log(error); - console.log(data); - } -); diff --git a/examples/document_conversion.v1.js b/examples/document_conversion.v1.js deleted file mode 100644 index 5ace3e0e6a..0000000000 --- a/examples/document_conversion.v1.js +++ /dev/null @@ -1,159 +0,0 @@ -'use strict'; - -const DocumentConversionV1 = require('watson-developer-cloud/document-conversion/v1'); -const fs = require('fs'); - -const document_conversion = new DocumentConversionV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE', - version_date: '2015-12-01' -}); - -// convert a single document -document_conversion.convert( - { - // (JSON) ANSWER_UNITS, NORMALIZED_HTML, or NORMALIZED_TEXT - file: fs.createReadStream(__dirname + '/resources/example.html'), - conversion_target: document_conversion.conversion_target.ANSWER_UNITS, - config: { - // split the html file by "h2", "h3" and "h4" tags - html_to_answer_units: { - selectors: ['h2', 'h3', 'h4'] - } - } - }, - function(err, response) { - console.log('----------\n'); - console.log('convert a single document\n'); - console.log('----------\n'); - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -// dry run of indexing a single document -document_conversion.index( - { - file: fs.createReadStream(__dirname + '/resources/sample-docx.docx'), - config: { - retrieve_and_rank: { - dry_run: true - } - } - }, - function(err, response) { - console.log('----------\n'); - console.log('dry run of indexing a single document\n'); - console.log('----------\n'); - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -// dry run of indexing only metadata -document_conversion.index( - { - metadata: { - metadata: [{ name: 'id', value: '1' }, { name: 'SomeMetadataName', value: 'SomeMetadataValue' }] - }, - config: { - retrieve_and_rank: { - dry_run: true - } - } - }, - function(err, response) { - console.log('----------\n'); - console.log('dry run of indexing only metadata\n'); - console.log('----------\n'); - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -// dry run of indexing a single document with metadata and additional configuration for convert_document and field mapping -document_conversion.index( - { - file: fs.createReadStream(__dirname + '/resources/example.html'), - metadata: { - metadata: [ - { name: 'id', value: '2' }, - { name: 'Author', value: 'IBM' }, - { name: 'Date Created', value: '2016-03-21' }, - { name: 'Category', value: 'Example' } - ] - }, - config: { - convert_document: { - normalized_html: { - // Exclude all anchor tags "" - exclude_tags_completely: ['a'] - } - }, - retrieve_and_rank: { - dry_run: true, - fields: { - mappings: [{ from: 'Author', to: 'Created By' }, { from: 'Date Created', to: 'Created On' }], - include: ['Created By', 'Created On'], - exclude: ['Category'] - } - } - } - }, - function(err, response) { - console.log('----------\n'); - console.log('dry run of indexing a single document with metadata and additional configuration for convert_document and field mappings\n'); - console.log('----------\n'); - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -// indexing a single document with metadata and additional configuration for convert_document and field mappings -document_conversion.index( - { - file: fs.createReadStream(__dirname + '/resources/example.html'), - metadata: { - metadata: [{ name: 'id', value: '3' }, { name: 'SomeMetadataName', value: 'SomeMetadataValue' }] - }, - config: { - convert_document: { - normalized_html: { - // Exclude all anchor tags "" - exclude_tags_completely: ['a'] - } - }, - retrieve_and_rank: { - dry_run: false, - service_instance_id: 'INSERT YOUR RETRIEVE AND RANK SERVICE INSTANCE ID HERE', - cluster_id: 'INSERT YOUR RETRIEVE AND RANK SERVICE SOLR CLUSTER ID HERE', - search_collection: 'INSERT YOUR RETRIEVE AND RANK SERVICE SOLR SEARCH COLLECTION NAME HERE', - fields: { - mappings: [{ from: 'SomeMetadataName', to: 'Created By' }] - } - } - } - }, - function(err, response) { - console.log('----------\n'); - console.log('indexing a single document with metadata and additional configuration for convert_document and field mappings\n'); - console.log('----------\n'); - if (err) { - console.error(err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); diff --git a/examples/document_conversion_integration.v1.js b/examples/document_conversion_integration.v1.js deleted file mode 100644 index 98905899ef..0000000000 --- a/examples/document_conversion_integration.v1.js +++ /dev/null @@ -1,149 +0,0 @@ -'use strict'; - -/* -Document Conversion integration with Retrieve and Rank - -The Document Conversion integration example shows how to convert a document into Answer Units by using the -Document Conversion Service and upload it to the Retrieve and Rank Service to make the Answer Units searchable. - - 1. Create a solr cluster, upload the solr configuration and create a collection - 1.1 In the files retrieve_and_ran_lifecycle.v1.js and retrieve_and_rank_solr.v1.js you will find example functions - on how to perform these steps. - 1.2 IMPORTANT: When uploading the solr configuration, use the [answer_unit_config.zip] from the resources folder, - which includes a schema.xml that defines the fields that will be indexed. - 2. Edit the file document_conversion_integration.v1.js and enter the following: - 2.1 service credentials for the Document Conversion and the Retrieve and Rank services (each service instance has a - different set of credentials) - 2.2 clusterId (obtained when creating the cluster) - 2.3 collectionName and inputDocument if you are using a different value from the default - 3. Run the following command: - node document_conversion_integration.v1.js -*/ - -const watson = require('watson-developer-cloud'); -const async = require('async'); -const fs = require('fs'); - -/* -Insert the credentials for your Retrieve and Rank service instance -NOTE: you cannot use your Bluemix account credentials here -*/ -const retrieve = new watson.RetrieveAndRankV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -/* -Insert the credentials for your Document Conversion service instance -NOTE: you cannot use your Bluemix account credentials here -*/ -const document_conversion = new watson.DocumentConversionV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE', - version_date: '2015-12-01' -}); - -const clusterId = 'INSERT YOUR CLUSTER ID HERE'; - -const inputDocument = '/resources/watson-wikipedia.html'; -const collectionName = 'example_collection'; - -const solrClient = retrieve.createSolrClient({ - cluster_id: clusterId, - collection_name: collectionName -}); - -async.waterfall([ - function convert(done) { - // convert a single document - document_conversion.convert( - { - // (JSON) ANSWER_UNITS, NORMALIZED_HTML, or NORMALIZED_TEXT - file: fs.createReadStream(__dirname + inputDocument), - conversion_target: document_conversion.conversion_target.ANSWER_UNITS, - config: { - html_to_html: { - specify_content_to_extract: { - enabled: true, - xpaths: ['//h3'] - } - } - } - }, - function(err, response) { - if (err) { - console.error(err); - } else { - done(null, response); - } - } - ); - }, - function indexAndCommit(response, done) { - console.log('Indexing a document...'); - const doc = mapAnswerUnits2SolrDocs(response); - solrClient.add(doc, function(err) { - if (err) { - console.log('Error indexing document: ' + err); - done(); - } else { - console.log('Indexed a document.'); - solrClient.commit(function(err) { - if (err) { - console.log('Error committing change: ' + err); - } else { - console.log('Successfully committed changes.'); - } - done(); - }); - } - }); - }, - function _search(done) { - console.log('Searching all documents.'); - const query = solrClient.createQuery(); - // This query searches for the term 'psychological' in the content_text field. - // For a wildcard query use: - // query.q({ '*' : '*' }); - query.q({ - content_text: 'psychological' - }); - - solrClient.search(query, function(err, searchResponse) { - if (err) { - console.log('Error searching for documents: ' + err); - } else { - console.log('Found ' + searchResponse.response.numFound + ' document(s).'); - console.log('First document: ' + JSON.stringify(searchResponse.response.docs[0], null, 2)); - } - done(); - }); - } -]); - -function mapAnswerUnits2SolrDocs(data) { - const answerUnits = data.answer_units; - const solrDocList = []; - answerUnits.forEach(function(value) { - const solrDoc = convertAnswerUnit2SolrDoc(value); - solrDocList.push(solrDoc); - }); - return solrDocList; -} - -function convertAnswerUnit2SolrDoc(au) { - let solrDoc; - const auContents = au.content; - auContents.forEach(function(auContent) { - if (auContent.media_type === 'text/plain') { - solrDoc = { - id: au.id, - title: au.title, - type: au.type, - media_type: auContent.media_type, - content_text: auContent.text - }; - } - }); - return solrDoc; -} diff --git a/examples/language_translator.v2.js b/examples/language_translator.v2.js deleted file mode 100644 index c4c122a1dd..0000000000 --- a/examples/language_translator.v2.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const LanguageTranslatorV2 = require('watson-developer-cloud/language-translator/v2'); -const fs = require('fs'); - -const language_translator = new LanguageTranslatorV2({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE', - url: 'https://gateway.watsonplatform.net/language-translator/api/' -}); - -language_translator.translate( - { - text: 'A sentence must have a verb', - source: 'en', - target: 'es' - }, - function(err, translation) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(translation, null, 2)); - } - } -); - -// Create a translation model using a tmx file -language_translator.createModel( - { - base_model_id: 'en-fr', - name: 'my-model', - forced_glossary: fs.createReadStream('resources/glossary.tmx') - }, - function(err, model) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(model, null, 2)); - } - } -); diff --git a/examples/natural_language_classifier.v1.js b/examples/natural_language_classifier.v1.js deleted file mode 100644 index 70e8aba5cc..0000000000 --- a/examples/natural_language_classifier.v1.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const NaturalLanguageClassifierV1 = require('watson-developer-cloud/natural-language-classifier/v1'); -const fs = require('fs'); - -const natural_language_classifier = new NaturalLanguageClassifierV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE', - version: 'v1' -}); - -// Creating a classifier -const params = { - language: 'en', - name: 'my-classifier', - training_data: fs.createReadStream('./resources/weather_data_train') -}; - -natural_language_classifier.create(params, function(err, response) { - if (err) { - console.log(err); - } else { - // copy the classifier_id from the response - console.log(JSON.stringify(response, null, 2)); - } -}); - -// Using a classifier -natural_language_classifier.classify( - { - text: 'Is it sunny?', - classifier_id: '' - }, // from the previous command - function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); diff --git a/examples/natural_language_understanding.v1.js b/examples/natural_language_understanding.v1.js index 70753f4b35..c92b094854 100644 --- a/examples/natural_language_understanding.v1.js +++ b/examples/natural_language_understanding.v1.js @@ -1,34 +1,30 @@ 'use strict'; + const fs = require('fs'); -const NaturalLanguageUnderstandingV1 = require('watson-developer-cloud/natural-language-understanding/v1.js'); -require('dotenv').config({ silent: true }); // optional +const NaturalLanguageUnderstandingV1 = require('ibm-watson/natural-language-understanding/v1.js'); const nlu = new NaturalLanguageUnderstandingV1({ - // note: if unspecified here, credentials are pulled from environment properties: - // NATURAL_LANGUAGE_UNDERSTANDING_USERNAME & NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD - // username: ''. - // password: '', - version_date: NaturalLanguageUnderstandingV1.VERSION_DATE_2016_01_23 + // See: https://github.com/watson-developer-cloud/node-sdk#authentication + version: '2019-07-12', }); -const filename = '../test/resources/natural_language_understanding/energy-policy.html'; -fs.readFile(filename, 'utf-8', function(file_error, file_data) { - if (file_error) { - console.log(file_error); +const filename = './resources/watson-wikipedia.html'; +fs.readFile(filename, 'utf-8', function (error, data) { + if (error) { + console.log(error); } else { const options = { - html: file_data, + html: data, features: { concepts: {}, - keywords: {} - } + keywords: {}, + }, }; - nlu.analyze(options, function(err, res) { - if (err) { - console.log(err); - return; - } - console.log(res); - }); + nlu + .analyze(options) + .then(response => { + console.log(JSON.stringify(response.result, null, 2)); + }) + .catch(error => console.error(error)); } }); diff --git a/examples/package-lock.json b/examples/package-lock.json new file mode 100644 index 0000000000..f0585c0902 --- /dev/null +++ b/examples/package-lock.json @@ -0,0 +1,905 @@ +{ + "name": "wdc-examples", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/async": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/async/-/async-2.4.2.tgz", + "integrity": "sha512-bWBbC7VG2jdjbgZMX0qpds8U/3h3anfIqE81L8jmVrgFZw/urEDnBA78ymGGKTTK6ciBXmmJ/xlok+Re41S8ww==" + }, + "@types/extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.1.tgz", + "integrity": "sha512-R1g/VyKFFI2HLC1QGAeTtCBWCo6n75l41OnsVYNbmKG+kempOESaodf6BeJyUM3Q0rKa/NQcTHbB2+66lNnxLw==" + }, + "@types/file-type": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/file-type/-/file-type-5.2.2.tgz", + "integrity": "sha512-GWtM4fyqfb+bec4ocpo51/y4x0b83Je+iA6eV131LT9wL0//G+1UgwbkMg7w61ceOwR+KkZXK00z44jrrNljWg==", + "requires": { + "@types/node": "*" + } + }, + "@types/isstream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@types/isstream/-/isstream-0.1.0.tgz", + "integrity": "sha512-jo6R5XtVMgu1ej3H4o9NXiUE/4ZxyxmDrGslGiBa4/ugJr+Olw2viio/F2Vlc+zrwC9HJzuApOCCVC2g5jqV0w==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/node": { + "version": "11.15.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.15.12.tgz", + "integrity": "sha512-iefeBfpmhoYaZfj+gJM5z9H9eiTwhuzhPsJgH/flx4HP2SBI2FNDra1D3vKljqPLGDr9Cazvh9gP9Xszc30ncA==" + }, + "@types/tough-cookie": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.7.tgz", + "integrity": "sha512-rMQbgMGxnLsdn8e9aPVyuN+zMQLrZ2QW8xlv7eWS1mydfGXN+tsTKffcIzd8rGCcLdmi3xvQw2MDaZI1bBNTaw==" + }, + "@types/websocket": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.0.tgz", + "integrity": "sha512-MLr8hDM8y7vvdAdnoDEP5LotRoYJj7wgT6mWzCUQH/gHqzS4qcnOT/K4dhC0WimWIUiA3Arj9QAJGGKNRiRZKA==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "axios": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + } + }, + "axios-cookiejar-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/axios-cookiejar-support/-/axios-cookiejar-support-0.5.1.tgz", + "integrity": "sha512-mmMbNDjpkAKlyxVOYjkpvV6rDRoSjBXwHbfkWvnsplRTGYCergbHvZInRB1G3lqumllUQwo0A4uPoqEsYfzq3A==", + "requires": { + "@types/tough-cookie": "^2.3.3", + "is-redirect": "^1.0.0", + "pify": "^4.0.0", + "tough-cookie": "^3.0.1" + } + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "file-type": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-7.7.1.tgz", + "integrity": "sha512-bTrKkzzZI6wH+NXhyD3SOXtb2zXTw2SbwI2RxUlRcXVsnN7jNL5hJzVQLYv7FOQhxFkK4XWdAflEaWFpaLLWpQ==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "ibm-cloud-sdk-core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-2.3.2.tgz", + "integrity": "sha512-EkS3YfKWhf9h63EAV7cE8eyeEf6SEDMWILuKGdVj9BtGU0FjodOv/6kFp8RjU5En5SWbogtX8Bzqx/FX1BtQUg==", + "requires": { + "@types/extend": "~3.0.0", + "@types/file-type": "~5.2.1", + "@types/isstream": "^0.1.0", + "@types/jest": "^24.0.23", + "@types/node": "~10.14.19", + "axios": "^0.18.0", + "axios-cookiejar-support": "^0.5.1", + "camelcase": "^5.3.1", + "debug": "^4.1.1", + "dotenv": "^6.2.0", + "extend": "~3.0.2", + "file-type": "^7.7.1", + "form-data": "^2.3.3", + "isstream": "~0.1.2", + "jsonwebtoken": "^8.5.1", + "lodash.isempty": "^4.4.0", + "mime-types": "~2.1.18", + "object.omit": "~3.0.0", + "object.pick": "~1.3.0", + "semver": "^6.2.0", + "ts-jest": "^24.2.0" + }, + "dependencies": { + "@types/node": { + "version": "10.14.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.22.tgz", + "integrity": "sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ibm-watson": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ibm-watson/-/ibm-watson-5.5.0.tgz", + "integrity": "sha512-gcijKSFTOMLcjEnSpeUa4/31naeMSZsz8t/wYNrR5c8gp1VN9LbJ3vhn3nFislfLYopTkNnWzya7w8oMhW4SGg==", + "requires": { + "@types/async": "^2.4.2", + "@types/extend": "^3.0.1", + "@types/isstream": "^0.1.0", + "@types/node": "^11.9.4", + "@types/websocket": "^1.0.0", + "async": "^2.6.2", + "axios": "^0.18.0", + "camelcase": "^5.3.1", + "extend": "~3.0.2", + "ibm-cloud-sdk-core": "^2.0.3", + "isstream": "~0.1.2", + "websocket": "^1.0.28" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "object.omit": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", + "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", + "requires": { + "is-extendable": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "speaker": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/speaker/-/speaker-0.5.1.tgz", + "integrity": "sha512-/9/ZGeGXLWNhEUqdXZmzgNr9QLNHWFkhKvwtJAKjlFx8mqGmyUPmBwiqw463KlRnUh7oXiHlmn6gqvkAEhtPnQ==", + "requires": { + "bindings": "^1.3.0", + "buffer-alloc": "^1.1.0", + "debug": "^4.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "requires": { + "debug": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "ts-jest": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.3.0.tgz", + "integrity": "sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ==", + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "wav": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz", + "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==", + "requires": { + "buffer-alloc": "^1.1.0", + "buffer-from": "^1.0.0", + "debug": "^2.2.0", + "readable-stream": "^1.1.14", + "stream-parser": "^0.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "websocket": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz", + "integrity": "sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ==", + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + } + } +} diff --git a/examples/package.json b/examples/package.json index 34e2161815..35702c3cc3 100644 --- a/examples/package.json +++ b/examples/package.json @@ -5,13 +5,11 @@ "private": true, "license": "Apache-2.0", "dependencies": { - "async": "^2.1.4", - "dotenv": "^2.0.0", - "speaker": "^0.3.0", - "watson-developer-cloud": "*", + "ibm-watson": "latest", + "speaker": "^0.5.1", "wav": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=10" } } diff --git a/examples/personality_insights.v2.js b/examples/personality_insights.v2.js deleted file mode 100644 index 4c5ee3a537..0000000000 --- a/examples/personality_insights.v2.js +++ /dev/null @@ -1,80 +0,0 @@ -'use strict'; - -const PersonalityInsightsV2 = require('watson-developer-cloud/personality-insights/v2'); -const fs = require('fs'); - -const personality_insights = new PersonalityInsightsV2({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -/* - * English example: - * 'text' parameter contains the input text. - */ -personality_insights.profile( - { - text: 'Enter more than 100 unique words here...' - }, - function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -/* - * Spanish example: - * 'language' parameter is needed in 'es' since our - * text content is in Spanish. - */ -personality_insights.profile( - { - text: 'Ingrese un texto de más de 100 palabras aquí...', - language: 'es' - }, - function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -/* - * Requesting output in an specific language: - * Following the Spanish Example, now we would like to - * obtain the output in Spanish, i.e. all the trait - * names and output messages in Spanish. You can specify - * the expected language by passing 'accept_language' - * parameter with the locale. - */ -personality_insights.profile( - { - text: 'Ingrese un texto de más de 100 palabras aquí...', - language: 'es', - accept_language: 'es' - }, - function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -/* - * CSV output example: - * https://www.ibm.com/watson/developercloud/doc/personality-insights/output.shtml#outputCSV - */ -personality_insights - .profile({ - text: 'Enter more than 100 unique words here...', - csv: true, - csv_headers: true - }) - .pipe(fs.createWriteStream('./output.csv')); diff --git a/examples/personality_insights.v3.js b/examples/personality_insights.v3.js deleted file mode 100644 index a65e8c77e3..0000000000 --- a/examples/personality_insights.v3.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -const PersonalityInsightsV3 = require('watson-developer-cloud/personality-insights/v3'); -const fs = require('fs'); - -const personality_insights = new PersonalityInsightsV3({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE', - version_date: '2016-10-19' -}); - -/* - * English example: - * 'text' parameter contains the input text. - */ -personality_insights.profile( - { - text: 'Enter more than 100 unique words here...', - consumption_preferences: true - }, - function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -/* - * Spanish example: - * 'language' parameter is needed in 'es' since our - * text content is in Spanish. - */ -personality_insights.profile( - { - text: 'Ingrese un texto de más de 100 palabras aquí...', - headers: { 'Content-Language': 'es' } - }, - function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -/* - * Requesting output in an specific language: - * Following the Spanish Example, now we would like to - * obtain the output in Spanish, i.e. all the trait - * names and output messages in Spanish. You can specify - * the expected language by passing 'accept_language' - * parameter with the locale. - */ -personality_insights.profile( - { - text: 'Ingrese un texto de más de 100 palabras aquí...', - headers: { 'Content-Language': 'es', 'Accept-Language': 'es' } - }, - function(err, response) { - if (err) { - console.log('error:', err); - } else { - console.log(JSON.stringify(response, null, 2)); - } - } -); - -/* - * CSV output example: - * https://www.ibm.com/watson/developercloud/doc/personality-insights/output.shtml#outputCSV - */ -personality_insights - .profile({ - text: 'Enter more than 100 unique words here...', - csv_headers: true, - headers: { Accept: 'text/csv' } - }) - .pipe(fs.createWriteStream('./output.csv')); diff --git a/examples/resources/answer_unit_config.zip b/examples/resources/answer_unit_config.zip deleted file mode 100644 index da7ddaf51e..0000000000 Binary files a/examples/resources/answer_unit_config.zip and /dev/null differ diff --git a/examples/resources/example_solr_config.zip b/examples/resources/example_solr_config.zip deleted file mode 100644 index 2e46d7455d..0000000000 Binary files a/examples/resources/example_solr_config.zip and /dev/null differ diff --git a/examples/resources/solr_docs.json b/examples/resources/solr_docs.json deleted file mode 100644 index 421f099870..0000000000 --- a/examples/resources/solr_docs.json +++ /dev/null @@ -1,2 +0,0 @@ -[{ "id" : 111, "title_s" : "JSON doc 1", "text_field_s": "one" }, -{ "id" : 222, "title_s" : "JSON doc 2", "text_field_s": "two" }] \ No newline at end of file diff --git a/examples/retrieve_and_rank_lifecycle.v1.js b/examples/retrieve_and_rank_lifecycle.v1.js deleted file mode 100644 index 5d805d76e5..0000000000 --- a/examples/retrieve_and_rank_lifecycle.v1.js +++ /dev/null @@ -1,94 +0,0 @@ -'use strict'; - -const RetrieveAndRankV1 = require('watson-developer-cloud/retrieve-and-rank/v1'); -const async = require('async'); - -const retrieve = new RetrieveAndRankV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -let clusterId; - -// Label to identify your cluster in responses. -const clusterName = 'example_cluster'; - -// The empty string will create a free cluster. Input an integer to create a cluster of that many units. -const clusterSize = 1; - -async.series([ - function createCluster(done) { - retrieve.createCluster({ cluster_name: clusterName, cluster_size: clusterSize }, function getId(err, res) { - if (err) { - return console.log('Error creating Solr cluster: ' + JSON.stringify(err)); - } - clusterId = res.solr_cluster_id; - console.log('Solr cluster creation request submitted.'); - done(); - }); - }, - function waitForClusterToBeReady(done) { - waitForCluster(clusterId, done); - }, - function listClusters(done) { - console.log('Listing Solr clusters.'); - retrieve.listClusters({}, function(err, res) { - printResponse(err, 'Error listing Solr clusters: ', res, done); - }); - }, - function resizeCluster(done) { - console.log('Resizing Solr cluster.'); - retrieve.resizeCluster({ cluster_id: clusterId, cluster_size: 2 }, function(err, res) { - printResponse(err, 'Error resizing Solr cluster: ', res, done); - }); - }, - function getResizeStatus(done) { - console.log("Getting Solr cluster's resize status."); - retrieve.getResizeStatus({ cluster_id: clusterId }, function(err, res) { - printResponse(err, 'Error getting resize status: ', res, done); - }); - }, - function getClusterStats(done) { - console.log('Getting stats from Solr cluster ' + clusterId); - retrieve.getClusterStats({ cluster_id: clusterId }, function(err, res) { - printResponse(err, 'Error getting Solr cluster stats: ', res, done); - }); - }, - function deleteCluster(done) { - console.log('Deleting Solr cluster ' + clusterId); - retrieve.deleteCluster({ cluster_id: clusterId }, function(err) { - printResponse(err, 'Error deleting Solr cluster: ', 'Deleted Solr cluster ' + clusterId, done); - }); - } -]); - -function waitForCluster(clusterId, callback) { - retrieve.pollCluster({ cluster_id: clusterId }, function isReady(err, res) { - if (err) { - return console.log('Error polling Solr cluster: ' + JSON.stringify(err, null, 2)); - } - - console.log('Waiting for Solr cluster ' + clusterId + ' to be ready...'); - if (res.solr_cluster_status === 'READY') { - console.log('Solr cluster ' + clusterId + ' is ready.'); - callback(); - } else { - setTimeout(function() { - waitForCluster(clusterId, callback); - }, 5000); - } - }); -} - -function printResponse(error, errorMessage, response, callback) { - if (error) { - if (error.code) { - console.log(errorMessage + JSON.stringify(error, null, 2)); - } else { - console.log(errorMessage + error); - } - } else { - console.log(response); - } - callback(); -} diff --git a/examples/retrieve_and_rank_solr.v1.js b/examples/retrieve_and_rank_solr.v1.js deleted file mode 100644 index e06e3392fa..0000000000 --- a/examples/retrieve_and_rank_solr.v1.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -const RetrieveAndRankV1 = require('watson-developer-cloud/retrieve-and-rank/v1'); -const async = require('async'); -const fs = require('fs'); - -const retrieve = new RetrieveAndRankV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -const clusterId = 'INSERT YOUR CLUSTER ID HERE'; -const collectionName = 'example_collection'; -const configName = 'example_config'; -const configZipPath = __dirname + '/resources/example_solr_config.zip'; -const jsonDocsFilePath = __dirname + '/resources/solr_docs.json'; - -const solrClient = retrieve.createSolrClient({ - cluster_id: clusterId, - collection_name: collectionName -}); - -async.series([ - function uploadConfig(done) { - console.log('Uploading Solr config ' + configName); - retrieve.uploadConfig( - { - cluster_id: clusterId, - config_name: configName, - config_zip_path: configZipPath - }, - function(err) { - printResponse(err, 'Error uploading Solr config: ', 'Uploaded Solr config ' + configName, done); - } - ); - }, - function listConfigs(done) { - console.log('Listing Solr configs for cluster ' + clusterId); - retrieve.listConfigs({ cluster_id: clusterId }, function(err, res) { - printResponse(err, 'Error listing Solr configs: ', res, done); - }); - }, - function getConfig(done) { - console.log('Getting Solr config ' + configName); - retrieve.getConfig( - { - cluster_id: clusterId, - config_name: configName - }, - function(err) { - if (err) { - console.log('Error getting config: ' + JSON.stringify(err, null, 2)); - } else { - // Save response to a local file here - } - done(); - } - ); - }, - function createCollection(done) { - retrieve.createCollection( - { - cluster_id: clusterId, - collection_name: collectionName, - config_name: configName - }, - function(err, res) { - printResponse(err, 'Error creating Solr collection: ', res, done); - } - ); - }, - function listCollections(done) { - retrieve.listCollections({ cluster_id: clusterId }, function(err, res) { - printResponse(err, 'Error listing Solr collections: ', res, done); - }); - }, - function indexAndCommitJsonFileDocs(done) { - console.log('Indexing documents via JSON file...'); - const jsonDocs = JSON.parse(fs.readFileSync(jsonDocsFilePath, 'utf8')); - solrClient.add(jsonDocs, function(err) { - if (err) { - console.log('Error indexing document: ' + err); - done(); - } else { - console.log('Indexed JSON documents.'); - solrClient.commit(function(err) { - if (err) { - console.log('Error committing change: ' + err); - } else { - console.log('Successfully commited changes.'); - } - done(); - }); - } - }); - }, - function indexAndCommitDocObject(done) { - console.log('Indexing a document...'); - const doc = { id: 1234, title_t: 'Hello', text_field_s: 'some text' }; - solrClient.add(doc, function(err) { - if (err) { - console.log('Error indexing document: ' + err); - done(); - } else { - console.log('Indexed a document.'); - solrClient.commit(function(err) { - if (err) { - console.log('Error committing change: ' + err); - } else { - console.log('Successfully commited changes.'); - } - done(); - }); - } - }); - }, - function _search(done) { - console.log('Searching all documents.'); - const query = solrClient.createQuery(); - query.q({ '*': '*' }); - solrClient.search(query, function(err, searchResponse) { - if (err) { - console.log('Error searching for documents: ' + err); - } else { - console.log('Found ' + searchResponse.response.numFound + ' document(s).'); - console.log('First document: ' + JSON.stringify(searchResponse.response.docs[0], null, 2)); - } - done(); - }); - }, - function deleteCollection(done) { - console.log('Deleting Solr collection ' + collectionName); - retrieve.deleteCollection( - { - cluster_id: clusterId, - collection_name: collectionName - }, - function(err) { - printResponse(err, 'Error deleting collection: ', 'Deleted Solr collection ' + collectionName, done); - } - ); - }, - function deleteConfig(done) { - console.log('Deleting Solr config ' + configName); - retrieve.deleteConfig( - { - cluster_id: clusterId, - config_name: configName - }, - function(err) { - printResponse(err, 'Error deleting config: ', 'Deleted Solr config ' + configName, done); - } - ); - } -]); - -function printResponse(error, errorMessage, response, callback) { - if (error) { - if (error.code) { - console.log(errorMessage + JSON.stringify(error, null, 2)); - } else { - console.log(errorMessage + error); - } - } else { - console.log(response); - } - callback(); -} diff --git a/examples/speech_to_text.v1.js b/examples/speech_to_text.v1.js index 61d1e0d689..5787793de6 100644 --- a/examples/speech_to_text.v1.js +++ b/examples/speech_to_text.v1.js @@ -1,31 +1,50 @@ 'use strict'; - -const SpeechToTextV1 = require('watson-developer-cloud/speech-to-text/v1'); +const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1'); const fs = require('fs'); -const speech_to_text = new SpeechToTextV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' +const speechToText = new SpeechToTextV1({ + // See: https://github.com/watson-developer-cloud/node-sdk#authentication }); +/* + This code will print the entire response to the console when it + receives the 'data' event. Some applications will want to write + out only the transcribed text, to the console or to a file. + To do this, remove `objectMode: true` from the `params` object. + Then, uncomment the block of code at Line 30. +*/ const params = { - content_type: 'audio/wav' + contentType: 'audio/wav', + objectMode: true, }; // create the stream -const recognizeStream = speech_to_text.createRecognizeStream(params); +const recognizeStream = speechToText.recognizeUsingWebSocket(params); // pipe in some audio fs.createReadStream(__dirname + '/resources/speech.wav').pipe(recognizeStream); -// and pipe out the transcription -recognizeStream.pipe(fs.createWriteStream('transcription.txt')); +/* +// these two lines of code will only work if `objectMode` is `false` -// listen for 'data' events for just the final text -// listen for 'results' events to get the raw JSON with interim results, timings, etc. +// pipe out the transcription to a file +recognizeStream.pipe(fs.createWriteStream('transcription.txt')); -recognizeStream.setEncoding('utf8'); // to get strings instead of Buffers from `data` events +// get strings instead of Buffers from `data` events +recognizeStream.setEncoding('utf8'); +*/ -['data', 'results', 'speaker_labels', 'error', 'close'].forEach(function(eventName) { - recognizeStream.on(eventName, console.log.bind(console, eventName + ' event: ')); +recognizeStream.on('data', function (event) { + onEvent('Data:', event); }); +recognizeStream.on('error', function (event) { + onEvent('Error:', event); +}); +recognizeStream.on('close', function (event) { + onEvent('Close:', event); +}); + +// Displays events on the console. +function onEvent(name, event) { + console.log(name, JSON.stringify(event, null, 2)); +} diff --git a/examples/speech_to_text_microphone_input/package.json b/examples/speech_to_text_microphone_input/package.json deleted file mode 100644 index 5cb666abe2..0000000000 --- a/examples/speech_to_text_microphone_input/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "watson-mic-example", - "version": "0.0.0", - "description": "IBM Watson Speech to Text microphone input example", - "main": "transcribe-mic-to-console.js", - "scripts": { - "start": "node transcribe-mic-to-console.js", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "private": true, - "author": "IBM", - "license": "Apache-2.0", - "dependencies": { - "dotenv": "^4.0.0", - "line-in": "^0.1.2", - "mic": "^2.1.1", - "watson-developer-cloud": "^2.33.0", - "wav": "^1.0.1" - } -} diff --git a/examples/speech_to_text_microphone_input/readme.md b/examples/speech_to_text_microphone_input/readme.md deleted file mode 100644 index 871bc765f4..0000000000 --- a/examples/speech_to_text_microphone_input/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# IBM Watson Speech to Text Microphone Transcription Examples - -Uses IBM Watson and Node.js to transcribe speech captured from the computer's microphone. - -The `transcribe-mic-to-file.js` example uses the more flexible [mic](https://www.npmjs.com/package/mic) package, -which requires that you have either [arecord](http://alsa-project.org/) (Linux) or -[sox](http://sox.sourceforge.net/) (Mac/Windows). - -The `transcribe-mic-to-console.js` example uses the [line-in](https://www.npmjs.com/package/line-in) package, -which has no dependencies. diff --git a/examples/speech_to_text_microphone_input/transcribe-mic-to-console.js b/examples/speech_to_text_microphone_input/transcribe-mic-to-console.js deleted file mode 100644 index 7e0b6a9a17..0000000000 --- a/examples/speech_to_text_microphone_input/transcribe-mic-to-console.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; -require('dotenv').config({ silent: true }); // optional, handy for local development -const SpeechToText = require('watson-developer-cloud/speech-to-text/v1'); -const LineIn = require('line-in'); // the `mic` package also works - it's more flexible but requires a bit more setup -const wav = require('wav'); - -const speechToText = new SpeechToText({ - // if left unspecified here, the SDK will fall back to the SPEECH_TO_TEXT_USERNAME and SPEECH_TO_TEXT_PASSWORD - // environment properties, and then Bluemix's VCAP_SERVICES environment property - // username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - // password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -const lineIn = new LineIn(); // 2-channel 16-bit little-endian signed integer pcm encoded audio @ 44100 Hz - -const wavStream = new wav.Writer({ - sampleRate: 44100, - channels: 2 -}); - -const recognizeStream = speechToText.createRecognizeStream({ content_type: 'audio/wav' }); - -lineIn.pipe(wavStream); - -wavStream.pipe(recognizeStream); - -recognizeStream.pipe(process.stdout); diff --git a/examples/speech_to_text_microphone_input/transcribe-mic-to-file.js b/examples/speech_to_text_microphone_input/transcribe-mic-to-file.js deleted file mode 100644 index 9aa61e3983..0000000000 --- a/examples/speech_to_text_microphone_input/transcribe-mic-to-file.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; -const fs = require('fs'); -require('dotenv').config({ silent: true }); // optional, handy for local development -const SpeechToText = require('watson-developer-cloud/speech-to-text/v1'); -const mic = require('mic'); -const wav = require('wav'); - -const speechToText = new SpeechToText({ - // if left unspecified here, the SDK will fall back to the SPEECH_TO_TEXT_USERNAME and SPEECH_TO_TEXT_PASSWORD - // environment properties, and then Bluemix's VCAP_SERVICES environment property - // username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - // password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -const micInstance = mic({ - rate: '48000', - channels: '1', - debug: false -}); - -const micInputStream = micInstance.getAudioStream(); - -const wavStream = new wav.FileWriter('./audio.wav', { - sampleRate: 48000, - channels: 1 -}); - -const recognizeStream = speechToText.createRecognizeStream({ content_type: 'audio/wav' }); - -micInputStream.pipe(wavStream); - -wavStream.pipe(recognizeStream); - -recognizeStream.pipe(fs.createWriteStream('./transcription.txt')); - -// note: -// If you just kill the process with control-c, the .wav file will have an incorrect header, and any in-flight -// transcription will be lost. -// This allows for a graceful termination of the recording, and the process will automatically exit after everything is -// complete. -console.log('Recording, press any key to exit'); -process.stdin.setRawMode(true); -// process.stdin.resume(); -process.stdin.once('data', function() { - console.log('Cleaning up and exiting...'); - process.stdin.setRawMode(false); - micInstance.stop(); - recognizeStream.on('end', function() { - process.exit(); - }); -}); - -micInstance.start(); diff --git a/examples/text_to_speech.v1.js b/examples/text_to_speech.v1.js index fbdd798736..bc1b6174af 100644 --- a/examples/text_to_speech.v1.js +++ b/examples/text_to_speech.v1.js @@ -1,288 +1,22 @@ -'use strict'; - -const TextToSpeechV1 = require('watson-developer-cloud/text-to-speech/v1'); +const TextToSpeechV1 = require('ibm-watson/text-to-speech/v1'); const fs = require('fs'); const textToSpeech = new TextToSpeechV1({ - // if left unspecified here, the SDK will fall back to the TEXT_TO_SPEECH_USERNAME and TEXT_TO_SPEECH_PASSWORD - // environment properties, and then Bluemix's VCAP_SERVICES environment property - // username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - // password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' + // See: https://github.com/watson-developer-cloud/node-sdk#authentication }); -// Synthesize speech, correct the wav header, then save to disk -// (wav header requires a file length, but this is unknown until after the header is already generated and sent) -// This method buffers the file in memory and repairs the WAV header in place. -textToSpeech.synthesize( - { - text: 'Hello from IBM Watson', - accept: 'audio/wav' - }, - function(err, audio) { - if (err) { - console.log(err); - return; - } - textToSpeech.repairWavHeader(audio); - fs.writeFileSync('audio.wav', audio); - console.log('audio.wav written with a corrected wav header'); - } -); +const synthesizeParams = { + text: 'Hello from IBM Watson', + accept: 'audio/mp3', + voice: 'en-US_AllisonVoice', +}; -// Synthesize speech and then pipe the results to a file -// This method is more efficient and does not buffer the file in memory, -// but the WAV header will be incorrect and an audio player will likely -// show the clip as being ~20 hours long. textToSpeech - .synthesize({ - text: 'Hello from IBM Watson', - voice: 'en-US_AllisonVoice', // Optional voice - accept: 'audio/wav' // default is audio/ogg; codec=opus + .synthesize(synthesizeParams) + .then(response => { + const audio = response.result; + audio.pipe(fs.createWriteStream('hello_world.mp3')); }) - .pipe(fs.createWriteStream('output.wav')); - -// Retrieve details of all available voices -textToSpeech.voices({}, function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); -}); - -// Retrieve details of a specific voice -textToSpeech.voice( - { - voice: 'en-GB_KateVoice' - }, - function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); - } -); - -// Pronunciation details for a word -textToSpeech.pronunciation( - { - text: 'iPhone', - format: 'spr', // 'ipa' (default) is only for english voices - voice: 'de-DE_DieterVoice' // optional, defaults to en-US_MichaelVoice - }, - function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); - } -); - -// create a customization model to change pronunciation of words -textToSpeech.createCustomization( - { - name: 'my custom alt language pronunciation model', - language: 'en-US', // currently, only en-US is accepted - description: 'Test model to try out custom pronunciations' - }, - function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); - /* -{ - "customization_id": "6666451d-a23e-485c-9bc5-c7ce722550d6" -} - */ - } -); - -// update a customization model -textToSpeech.updateCustomization( - { - customization_id: '6666451d-a23e-485c-9bc5-c7ce722550d6', - name: 'new name', // optional - description: 'new description', // optional - words: [{ word: 'NCAA', translation: 'N C double A' }, { word: 'iPhone', translation: 'I phone' }] // required - replaces existing words list - }, - function(err) { - if (err) { - return console.log(err); - } - console.log('updated'); - } -); - -// get a list of custom voice models -textToSpeech.getCustomizations( - { - language: 'en-US' // optional filter (currently only accepts en-US) - }, - function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); - /* -{ - "customizations": [ - { - "last_modified": 1472067196711, - "customization_id": "10ba7c7c-ce2d-447f-9724-72da0d6f1e66", - "created": 1472067196711, - "description": "Test model to try out custom pronunciations", - "name": "my custom pronunciation model", - "language": "en-US", - "owner": "7f966201-2afd-48ea-b5c1-d6981d50633e" - }, - { - "last_modified": 1465475563937, - "customization_id": "e24536fd-b1b4-48f3-95fe-c2d93e7f5c45", - "created": 1465475563937, - "description": "a simple model for testing purposes", - "name": "test model", - "language": "en-US", - "owner": "7f966201-2afd-48ea-b5c1-d6981d50633e" - } - //... - ] -} - */ - } -); - -// get details of a custom voice model -textToSpeech.getCustomization( - { - customization_id: '6666451d-a23e-485c-9bc5-c7ce722550d6' - }, - function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); - /* -{ - "last_modified": 1472067165812, - "customization_id": "6666451d-a23e-485c-9bc5-c7ce722550d6", - "created": 1472066628780, - "words": [ - { - "word": "NCAA", - "translation": "N C double A" - }, - { - "word": "iPhone", - "translation": "I phone" - } - ], - "description": "new description", - "name": "new name", - "language": "en-US", - "owner": "7f966201-2afd-48ea-b5c1-d6981d50633e" -} - */ - } -); - -// delete a custom voice model -textToSpeech.deleteCustomization( - { - customization_id: '9d153f61-a9c4-4b73-8eaf-63951c6dd77d' - }, - function(err) { - if (err) { - return console.log(err); - } - console.log('deleted'); - } -); - -// add multiple words to an existing model -textToSpeech.addWords( - { - customization_id: '7c7f8ba7-2f83-48f2-ae52-3a70825f9899', - words: [{ word: 'NCAA', translation: 'N C double A' }, { word: 'iPhone', translation: 'I phone' }] - }, - function(err) { - if (err) { - return console.log(err); - } - console.log('added'); - } -); - -// add a single word to an existing model -textToSpeech.updateCustomization( - { - customization_id: '7c7f8ba7-2f83-48f2-ae52-3a70825f9899', - word: 'NCAA', - translation: 'N C double A' - }, - function(err) { - if (err) { - return console.log(err); - } - console.log('added'); - } -); - -// get all words in a customization -textToSpeech.getWords( - { - customization_id: '7c7f8ba7-2f83-48f2-ae52-3a70825f9899' - }, - function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); - /* -{ - "words": [ - { - "word": "NCAA", - "translation": "N C double A" - }, - { - "word": "iPhone", - "translation": "I phone" - } - ] -} - */ - } -); - -// get a single word from a customization -textToSpeech.getWord( - { - customization_id: '7c7f8ba7-2f83-48f2-ae52-3a70825f9899', - word: 'iPhone' - }, - function(err, res) { - if (err) { - return console.log(err); - } - console.log(JSON.stringify(res, null, 2)); - /* -{ - "translation": "I phone" -} - */ - } -); - -// delete a word from a customization -textToSpeech.deleteWord( - { - customization_id: '7c7f8ba7-2f83-48f2-ae52-3a70825f9899', - word: 'iPhone' - }, - function(err) { - if (err) { - return console.log(err); - } - console.log('deleted word'); - } -); + .catch(err => { + console.log('error:', err); + }); diff --git a/examples/text_to_speech_synthesize_handle_errors.js b/examples/text_to_speech_synthesize_handle_errors.js deleted file mode 100644 index 82d47053cf..0000000000 --- a/examples/text_to_speech_synthesize_handle_errors.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -const TextToSpeechV1 = require('watson-developer-cloud/text-to-speech/v1'); -const fs = require('fs'); -require('dotenv').config({ silent: true }); - -const textToSpeech = new TextToSpeechV1({ - // if left unspecified here, the SDK will fall back to the TEXT_TO_SPEECH_USERNAME and TEXT_TO_SPEECH_PASSWORD - // environment properties, and then Bluemix's VCAP_SERVICES environment property - // username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - // password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -// Synthesize speech and pipe to disk, -// but avoid piping errors -const stream = textToSpeech - .synthesize( - { - text: 'Hello from IBM Watson', - voice: 'INVALID_VOICE', // comment this line to show the example working correctly - accept: 'audio/wav' // default is audio/ogg; codec=opus - }, - function(error) { - if (error) { - console.log(error); - } - } - ) - .on('response', function(res) { - if (res.statusCode === 200) { - stream.pipe(fs.createWriteStream('output.wav')); - } - // errors will be handled by the callback after the body is downloaded - }); diff --git a/examples/text_to_speech_to_speakers.js b/examples/text_to_speech_to_speakers.js index bd4e233aed..6589019583 100644 --- a/examples/text_to_speech_to_speakers.js +++ b/examples/text_to_speech_to_speakers.js @@ -3,24 +3,27 @@ // This example takes uncompressed wav audio from the Text to Speech service and plays it through the computer's speakers // Should work on windows/mac/linux, but linux may require some extra setup first: https://www.npmjs.com/package/speaker -const TextToSpeechV1 = require('watson-developer-cloud/text-to-speech/v1'); +const TextToSpeechV1 = require('ibm-watson/text-to-speech/v1'); const wav = require('wav'); const Speaker = require('speaker'); -require('dotenv').load({ silent: true }); // imports environment properties from a .env file if present const textToSpeech = new TextToSpeechV1({ - // if left unspecified here, the SDK will fall back to the TEXT_TO_SPEECH_USERNAME and TEXT_TO_SPEECH_PASSWORD - // environment properties, and then Bluemix's VCAP_SERVICES environment property - // username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - // password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' + // See: https://github.com/watson-developer-cloud/node-sdk#authentication }); const reader = new wav.Reader(); // the "format" event gets emitted at the end of the WAVE header -reader.on('format', function(format) { +reader.on('format', function (format) { // the WAVE header is stripped from the output of the reader reader.pipe(new Speaker(format)); }); -textToSpeech.synthesize({ text: 'hello from IBM Watson', accept: 'audio/wav' }).pipe(reader); +textToSpeech + .synthesize({ text: 'hello from IBM Watson', accept: 'audio/wav' }) + .then(response => { + response.result.pipe(reader); + }) + .catch(err => { + console.log(err); + }); diff --git a/examples/text_to_speech_websocket.js b/examples/text_to_speech_websocket.js new file mode 100644 index 0000000000..166c5d866c --- /dev/null +++ b/examples/text_to_speech_websocket.js @@ -0,0 +1,49 @@ +'use strict'; + +const fs = require('fs'); +const TextToSpeechV1 = require('ibm-watson/text-to-speech/v1'); + +const textToSpeech = new TextToSpeechV1({ + // See: https://github.com/watson-developer-cloud/node-sdk#authentication +}); + +// specify the text to synthesize +const params = { + text: 'Hello, world.', + accept: 'audio/mp3', +}; + +// synthesizeUsingWebSocket returns a Readable Stream that can be piped or listened to +const synthesizeStream = textToSpeech.synthesizeUsingWebSocket(params); + +// the output of the stream can be piped to any writable stream, like an audio file +synthesizeStream.pipe(fs.createWriteStream('./speech.mp3')); + +// !!!!! IMPORTANT !!!!! +// if the stream is not being piped anywhere and is only being listened to, the stream needs +// to be explicitly set to flowing mode by uncommenting the following line: + +// synthesizeStream.resume(); + +// the 'message' event is emitted when data is processed and returned from the service +// the 'message' parameter is the entire response frame of information returned from the +// service. it is mainly useful for debugging +// the 'data' parameter is the data payload contained within the message. it is typically +// binary audio data, but if the text includes SSML marks or the request includes the +// 'timings' parameter, 'data' could be a string containing marks or timing information +synthesizeStream.on('message', (message, data) => { + console.log(data); +}); + +// the 'error' event is emitted if there is an error during the connection +// 'err' is the Error object describing the error +synthesizeStream.on('error', err => { + console.log(err); +}); + +// the 'close' event is emitted once, when the connection is terminated by the service +// the 'code' parameter is the status code. 1000 is the code for a normal termination +// the 'reason' parameter provides a string description of how the connection closed +synthesizeStream.on('close', (code, reason) => { + console.log(code); +}); diff --git a/examples/tone_analyzer.v3.js b/examples/tone_analyzer.v3.js deleted file mode 100644 index 8b93eab3b7..0000000000 --- a/examples/tone_analyzer.v3.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -const ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3'); - -const tone_analyzer = new ToneAnalyzerV3({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE', - version_date: '2016-05-19' -}); - -tone_analyzer.tone({ text: 'Greetings from Watson Developer Cloud!' }, function(err, tone) { - if (err) { - console.log(err); - } else { - console.log('tone endpoint:'); - console.log(JSON.stringify(tone, null, 2)); - } -}); - -const params = { - utterances: [ - { text: 'My charger isn’t working.', user: 'customer' }, - { text: 'Thanks for reaching out. Can you give me some more detail about the issue?', user: 'agent' }, - { - text: "I put my charger in my phone last night to charge and it isn't working. Which is ridiculous, it's a new charger, I bought it yesterday.", - user: 'customer' - }, - { text: 'I’m sorry you’re having issues with charging. What kind of charger do you have?', user: 'agent' } - ] -}; - -tone_analyzer.tone_chat(params, function(err, tone) { - if (err) { - console.log(err); - } else { - console.log('tone_chat endpoint:'); - console.log(JSON.stringify(tone, null, 2)); - } -}); diff --git a/examples/tradeoff_analytics.v1.js b/examples/tradeoff_analytics.v1.js deleted file mode 100644 index 343158d83a..0000000000 --- a/examples/tradeoff_analytics.v1.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -const TradeoffAnalyticsV1 = require('watson-developer-cloud/tradeoff-analytics/v1'); - -const tradeoff_analytics = new TradeoffAnalyticsV1({ - username: 'INSERT YOUR USERNAME FOR THE SERVICE HERE', - password: 'INSERT YOUR PASSWORD FOR THE SERVICE HERE' -}); - -// From file -const params = require('./resources/problem.json'); - -tradeoff_analytics.dilemmas(params, function(err, res) { - if (err) { - console.log(err); - } else { - console.log(JSON.stringify(res, null, 2)); - } -}); diff --git a/examples/visual_recognition.v3.js b/examples/visual_recognition.v3.js deleted file mode 100644 index 200e3c2319..0000000000 --- a/examples/visual_recognition.v3.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -const VisualRecognitionV3 = require('watson-developer-cloud/visual-recognition/v3'); -const fs = require('fs'); - -const visual_recognition = new VisualRecognitionV3({ - api_key: 'INSERT YOUR API KEY HERE', - version_date: VisualRecognitionV3.VERSION_DATE_2016_05_20 -}); - -const params = { - // must be a .zip file containing images - images_file: fs.createReadStream('./resources/car.png') -}; - -visual_recognition.classify(params, function(err, res) { - if (err) { - console.log(err); - } else { - console.log(JSON.stringify(res, null, 2)); - } -}); diff --git a/examples/webpack/.env.example b/examples/webpack/.env.example new file mode 100644 index 0000000000..739897532f --- /dev/null +++ b/examples/webpack/.env.example @@ -0,0 +1,2 @@ +TONE_ANALYZER_APIKEY=kcLLX123ghgjVSdM9Basdadasda90IesOrCIywWr0rNLo +TONE_ANALYZER_URL=https://api.us-east.tone-analyzer.watson.cloud.ibm.com diff --git a/examples/webpack/README.md b/examples/webpack/README.md index 7e4e1bb9bd..1c92e1c475 100644 --- a/examples/webpack/README.md +++ b/examples/webpack/README.md @@ -7,76 +7,61 @@ The example here uses [express](http://expressjs.com/) to serve the content and ## Important notes -A server-side component is required to generate auth tokens for services that use a username/password combo. -(This is all services except Alchemy and Visual Recognition which use API keys instead.) +A server-side component is required to generate auth tokens for services that use an IAM apikey. Not all Watson services currently support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS), and in some cases, certain methods work while others do not. Below is a partial list of service support: The following services support CORS - * Tradeoff Analytics - * Tone Analyzer - * Speech to Text* - * Text to Speech* - * Personality Insights - * Document Conversion - * All Alchemy services - -\* Speech to Text and Text to Speech should be usable via the Node.js SDK, but we also have a [Speech JavaScript SDK](https://www.npmjs.com/package/watson-speech) that was specifically written for browser support. +- Tone Analyzer +- Speech to Text\* +- Text to Speech\* +- Personality Insights +- Visual Recognition +- Natural Language Understanding +- Watson Assistant +* Speech to Text and Text to Speech should be usable via the Node.js SDK, but we also have a [Speech JavaScript SDK](https://www.npmjs.com/package/watson-speech) that was specifically written for browser support. The following services do not support CORS - * Language Translator - * Visual Recognition (partial support) - * Retrieve and Rank - +- Language Translator ## Webpack configuration -In most cases, you will want the following in your configuration: +The `ibm-watson` Node SDK version 5+ should work out of the box with most bundlers, including webpack. +In most cases, you will want to add the following in your webpack.config.js file: ```js +node: { + // see http://webpack.github.io/docs/configuration.html#node + // and https://webpack.js.org/configuration/node/ + fs: 'empty', + module: 'empty', + net: 'empty', + tls: 'empty', +}, +``` +so that it should look like this: +```js +module.exports = { + mode: 'development', + entry: './public/client.js', + output: { + filename: 'bundle.js', + }, node: { // see http://webpack.github.io/docs/configuration.html#node // and https://webpack.js.org/configuration/node/ fs: 'empty', + module: 'empty', net: 'empty', - tls: 'empty' + tls: 'empty', }, +}; ``` -Several services use the `fs` library, which won't work in browser environments, and the `request` library loads `fs`, -`net`, and `tls`, but shouldn't need any of them for basic usage because webpack automatically includes -[equivalent libraries](https://www.npmjs.com/package/node-libs-browser) - -Ideally, only the specific services used shoud be included, for example: - -```js -var ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3'); -var ConversationV1 = require('watson-developer-cloud/conversation/v1'); -``` - -**Not Recommended**: It's possible to load the entire library, but it is not recommended due to the added file size: - -```js -var watson = require('watson-developer-cloud'); -``` -or -``` -const { ConversationV1, ToneAnalyzerV3 } = require('watson-developer-cloud'); -``` - -Additionally, when importing the entire library, the `shebang-loader` package is need and must be configured -in webpack.config.js: - -```js - module: { - rules: [{ - test: /JSONStream/, - use: 'shebang-loader' - }] - } -``` +Several services use the `fs` and `module` libraries, which won't work in browser environments, and the `request` library loads `fs`, +`net`, and `tls`, but shouldn't need any of them for basic usage because webpack automatically includes [equivalent libraries](https://www.npmjs.com/package/node-libs-browser). diff --git a/examples/webpack/package-lock.json b/examples/webpack/package-lock.json new file mode 100644 index 0000000000..220357bd9a --- /dev/null +++ b/examples/webpack/package-lock.json @@ -0,0 +1,4278 @@ +{ + "name": "watson-developer-cloud-webpack-example", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/async": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/async/-/async-2.4.2.tgz", + "integrity": "sha512-bWBbC7VG2jdjbgZMX0qpds8U/3h3anfIqE81L8jmVrgFZw/urEDnBA78ymGGKTTK6ciBXmmJ/xlok+Re41S8ww==" + }, + "@types/extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.1.tgz", + "integrity": "sha512-R1g/VyKFFI2HLC1QGAeTtCBWCo6n75l41OnsVYNbmKG+kempOESaodf6BeJyUM3Q0rKa/NQcTHbB2+66lNnxLw==" + }, + "@types/file-type": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/file-type/-/file-type-5.2.2.tgz", + "integrity": "sha512-GWtM4fyqfb+bec4ocpo51/y4x0b83Je+iA6eV131LT9wL0//G+1UgwbkMg7w61ceOwR+KkZXK00z44jrrNljWg==", + "requires": { + "@types/node": "*" + } + }, + "@types/isstream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@types/isstream/-/isstream-0.1.0.tgz", + "integrity": "sha512-jo6R5XtVMgu1ej3H4o9NXiUE/4ZxyxmDrGslGiBa4/ugJr+Olw2viio/F2Vlc+zrwC9HJzuApOCCVC2g5jqV0w==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/node": { + "version": "11.15.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.15.12.tgz", + "integrity": "sha512-iefeBfpmhoYaZfj+gJM5z9H9eiTwhuzhPsJgH/flx4HP2SBI2FNDra1D3vKljqPLGDr9Cazvh9gP9Xszc30ncA==" + }, + "@types/tough-cookie": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.7.tgz", + "integrity": "sha512-rMQbgMGxnLsdn8e9aPVyuN+zMQLrZ2QW8xlv7eWS1mydfGXN+tsTKffcIzd8rGCcLdmi3xvQw2MDaZI1bBNTaw==" + }, + "@types/websocket": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.0.tgz", + "integrity": "sha512-MLr8hDM8y7vvdAdnoDEP5LotRoYJj7wgT6mWzCUQH/gHqzS4qcnOT/K4dhC0WimWIUiA3Arj9QAJGGKNRiRZKA==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "dependencies": { + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + } + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "axios": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "axios-cookiejar-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/axios-cookiejar-support/-/axios-cookiejar-support-0.5.1.tgz", + "integrity": "sha512-mmMbNDjpkAKlyxVOYjkpvV6rDRoSjBXwHbfkWvnsplRTGYCergbHvZInRB1G3lqumllUQwo0A4uPoqEsYfzq3A==", + "requires": { + "@types/tough-cookie": "^2.3.3", + "is-redirect": "^1.0.0", + "pify": "^4.0.0", + "tough-cookie": "^3.0.1" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "file-type": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-7.7.1.tgz", + "integrity": "sha512-bTrKkzzZI6wH+NXhyD3SOXtb2zXTw2SbwI2RxUlRcXVsnN7jNL5hJzVQLYv7FOQhxFkK4XWdAflEaWFpaLLWpQ==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "optional": 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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "optional": true + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "ibm-cloud-sdk-core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-2.3.2.tgz", + "integrity": "sha512-EkS3YfKWhf9h63EAV7cE8eyeEf6SEDMWILuKGdVj9BtGU0FjodOv/6kFp8RjU5En5SWbogtX8Bzqx/FX1BtQUg==", + "requires": { + "@types/extend": "~3.0.0", + "@types/file-type": "~5.2.1", + "@types/isstream": "^0.1.0", + "@types/jest": "^24.0.23", + "@types/node": "~10.14.19", + "axios": "^0.18.0", + "axios-cookiejar-support": "^0.5.1", + "camelcase": "^5.3.1", + "debug": "^4.1.1", + "dotenv": "^6.2.0", + "extend": "~3.0.2", + "file-type": "^7.7.1", + "form-data": "^2.3.3", + "isstream": "~0.1.2", + "jsonwebtoken": "^8.5.1", + "lodash.isempty": "^4.4.0", + "mime-types": "~2.1.18", + "object.omit": "~3.0.0", + "object.pick": "~1.3.0", + "semver": "^6.2.0", + "ts-jest": "^24.2.0" + }, + "dependencies": { + "@types/node": { + "version": "10.14.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.22.tgz", + "integrity": "sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "ibm-watson": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ibm-watson/-/ibm-watson-5.5.0.tgz", + "integrity": "sha512-gcijKSFTOMLcjEnSpeUa4/31naeMSZsz8t/wYNrR5c8gp1VN9LbJ3vhn3nFislfLYopTkNnWzya7w8oMhW4SGg==", + "requires": { + "@types/async": "^2.4.2", + "@types/extend": "^3.0.1", + "@types/isstream": "^0.1.0", + "@types/node": "^11.9.4", + "@types/websocket": "^1.0.0", + "async": "^2.6.2", + "axios": "^0.18.0", + "camelcase": "^5.3.1", + "extend": "~3.0.2", + "ibm-cloud-sdk-core": "^2.0.3", + "isstream": "~0.1.2", + "websocket": "^1.0.28" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "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==", + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "requires": { + "mime-db": "~1.38.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.omit": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", + "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", + "requires": { + "is-extendable": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "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=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-loader": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shebang-loader/-/shebang-loader-0.0.1.tgz", + "integrity": "sha1-pAAEldRMzu++xjQ157FphWn6Uuw=" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "ts-jest": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.3.0.tgz", + "integrity": "sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ==", + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + } + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==" + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "websocket": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz", + "integrity": "sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ==", + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + }, + "dependencies": { + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + } + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + } + } +} diff --git a/examples/webpack/package.json b/examples/webpack/package.json index 00e5b7cc4a..dacf70e59a 100644 --- a/examples/webpack/package.json +++ b/examples/webpack/package.json @@ -9,15 +9,15 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "dotenv": "^2.0.0", - "express": "^4.14.0", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "ibm-watson": "latest", "shebang-loader": "0.0.1", - "watson-developer-cloud": "^2.7.1", - "webpack": "^2.2.1", - "webpack-dev-middleware": "^1.10.0" + "webpack": "^4.43.0", + "webpack-dev-middleware": "^3.7.2" }, "devDependencies": {}, "engines": { - "node": ">=4" + "node": ">=12" } } diff --git a/examples/webpack/public/client.js b/examples/webpack/public/client.js index 9ef2439573..918e9287cf 100644 --- a/examples/webpack/public/client.js +++ b/examples/webpack/public/client.js @@ -1,49 +1,51 @@ +/* eslint-disable require-jsdoc */ 'use strict'; // notes: // // * This file is bundled by webpack-dev-middleware into bundle.js // -// * The require('watson-developer-cloud/language_translator/v2') could also be written as require('watson-developer-cloud').LanguageTranslatorV2, +// * The require('ibm-watson/language_translator/v3') could also be written as require('ibm-watson').LanguageTranslatorV3, // but that version results in a much larger bundle size. // // * Tokens expire after 1 hour. This demo simply fetches a new one for each translation rather than keeping a fresh one. // // * fetch() is a modern version of XMLHttpRequest. A pollyfill is available for older browsers: https://github.com/github/fetch -var ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3'); +const ToneAnalyzerV3 = require('ibm-watson/tone-analyzer/v3'); +const { BearerTokenAuthenticator } = require('ibm-watson/auth'); -var btn = document.getElementById('analyze-btn'); -var input = document.getElementById('input'); -var output = document.getElementById('output'); +const btn = document.getElementById('analyze-btn'); +const input = document.getElementById('input'); +const output = document.getElementById('output'); /** * @return {Promise} returns a promise that resolves to a string token */ function getToken() { - return fetch('/api/token/tone_analyzer').then(function(response) { - return response.text(); - }); + return fetch('/api/token').then(resp => resp.json()); } -function analyze(token) { +function analyze(credentials) { const toneAnalyzer = new ToneAnalyzerV3({ - token: token, - version_date: '2016-05-19' + authenticator: new BearerTokenAuthenticator({ + bearerToken: credentials.accessToken, + }), + url: credentials.url, + version: '2016-05-19', }); - toneAnalyzer.tone( - { - text: input.value - }, - function(err, result) { - if (err) { - output.innerHTML = err; - return console.log(err); - } + toneAnalyzer + .tone({ + toneInput: { text: input.value }, + contentType: 'application/json', + }) + .then(({ result }) => { output.innerHTML = JSON.stringify(result, null, 2); - } - ); + }) + .catch(error => { + output.innerHTML = error; + }); } -btn.onclick = function() { +btn.onclick = function () { getToken().then(analyze); }; diff --git a/examples/webpack/server.js b/examples/webpack/server.js index 7d0503ba10..12517d4f9f 100644 --- a/examples/webpack/server.js +++ b/examples/webpack/server.js @@ -1,45 +1,42 @@ -'use strict'; -const express = require('express'); // eslint-disable-line node/no-missing-require +require('dotenv').config({ silent: true }); +const express = require('express'); const app = express(); -const dotenv = require('dotenv'); -const watson = require('watson-developer-cloud'); -// bundle the code +const { IamTokenManager } = require('ibm-watson/auth'); + const webpackDevMiddleware = require('webpack-dev-middleware'); const webpack = require('webpack'); const webpackConfig = require('./webpack.config'); const compiler = webpack(webpackConfig); +if (!process.env.TONE_ANALYZER_APIKEY) { + console.log('This example requires the TONE_ANALYZER_APIKEY environment variable'); + process.exit(1); +} + +const toneAuthenticator = new IamTokenManager({ + apikey: process.env.TONE_ANALYZER_APIKEY, +}); + app.use( webpackDevMiddleware(compiler, { - publicPath: '/' // Same as `output.publicPath` in most cases. + publicPath: '/', // Same as `output.publicPath` in most cases. }) ); app.use(express.static('public/')); -// optional: load environment properties from a .env file -dotenv.load({ silent: true }); - -// For local development, specify the username and password or set env properties -const ltAuthService = new watson.AuthorizationV1({ - username: process.env.TONE_ANALYZER_USERNAME || '', - password: process.env.TONE_ANALYZER_PASSWORD || '', - url: watson.ToneAnalyzerV3.URL -}); - -app.get('/api/token/tone_analyzer', function(req, res) { - ltAuthService.getToken(function(err, token) { - if (err) { - console.log('Error retrieving token: ', err); - return res.status(500).send('Error retrieving token'); - } - res.send(token); - }); +app.get('/api/token', function (req, res) { + return toneAuthenticator + .requestToken() + .then(({ result }) => { + res.json({ accessToken: result.access_token, url: process.env.TONE_ANALYZER_URL }); + }) + .catch(console.error); }); -const port = process.env.PORT || process.env.VCAP_APP_PORT || 3000; -app.listen(port, function() { +const port = process.env.PORT || 3000; +app.listen(port, function () { console.log('Watson browserify example server running at http://localhost:%s/', port); }); diff --git a/examples/webpack/webpack.config.js b/examples/webpack/webpack.config.js index d2175fe8e2..e26bc862b6 100644 --- a/examples/webpack/webpack.config.js +++ b/examples/webpack/webpack.config.js @@ -1,30 +1,9 @@ 'use strict'; module.exports = { + mode: 'development', entry: './public/client.js', output: { - filename: 'bundle.js' + filename: 'bundle.js', }, - // http://webpack.github.io/docs/configuration.html#node - node: { - fs: 'empty', - net: 'empty', - tls: 'empty' - }, - // Loader for Retrieve & Rank - // Retrieve & Rank depends on solr-client, which depends on JSONStream, which starts with a shebang line, which - // Webpack chokes on - this strips off that line. - // - // This isn't strictly needed because Retrieve & Rank doesn't support CORS, so there's no reason to include it in a - // bundle. However, it's preserved here just to make things easy. - // - // See https://github.com/webpack/webpack/issues/2168 for more info - module: { - rules: [ - { - test: /JSONStream/, - use: 'shebang-loader' - } - ] - } }; diff --git a/index.js b/index.js deleted file mode 100644 index 41b260579c..0000000000 --- a/index.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Copyright 2014 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -/** - * @module watson-developer-cloud - */ -exports.AlchemyDataNewsV1 = require('./alchemy-data-news/v1'); -exports.AlchemyLanguageV1 = require('./alchemy-language/v1'); - -exports.AuthorizationV1 = require('./authorization/v1'); - -exports.ConversationV1 = require('./conversation/v1'); -exports.ConversationV1Experimental = require('./conversation/v1-experimental'); - -exports.DialogV1 = require('./dialog/v1'); - -exports.DiscoveryV1 = require('./discovery/v1'); -exports.DiscoveryV1Experimental = require('./discovery/v1-experimental'); - -exports.DocumentConversionV1 = require('./document-conversion/v1'); - -exports.LanguageTranslationV2 = require('./language-translation/v2'); -exports.LanguageTranslatorV2 = require('./language-translator/v2'); - -exports.NaturalLanguageClassifierV1 = require('./natural-language-classifier/v1'); - -exports.NaturalLanguageUnderstandingV1 = require('./natural-language-understanding/v1'); - -exports.PersonalityInsightsV2 = require('./personality-insights/v2'); -exports.PersonalityInsightsV3 = require('./personality-insights/v3'); - -exports.RetrieveAndRankV1 = require('./retrieve-and-rank/v1'); - -exports.SpeechToTextV1 = require('./speech-to-text/v1'); - -exports.TextToSpeechV1 = require('./text-to-speech/v1'); - -exports.ToneAnalyzerV3 = require('./tone-analyzer/v3'); - -exports.TradeoffAnalyticsV1 = require('./tradeoff-analytics/v1'); - -exports.VisualRecognitionV3 = require('./visual-recognition/v3'); - -// adding shim constructors for backwards compatibility - -// 2-d map of snake_case service names & version => constructor function -// e.g. servicesByVersion.text_to_speech.v1 === exports.TextToSpeechV1; -const servicesByVersion = {}; -Object.keys(exports).forEach(function(key) { - const Service = exports[key]; - const name = Service.prototype.name; - const version = Service.prototype.version; - servicesByVersion[name] = servicesByVersion[name] || {}; - servicesByVersion[name][version] = Service; -}); - -Object.keys(servicesByVersion).forEach(function(serviceName) { - Object.defineProperty(exports, serviceName, { - enumerable: false, - configurable: true, - writable: true, - value: function(options) { - options = options || {}; - - // previously, AlchemyAPI did not require a version to be specified - if (serviceName.indexOf('alchemy_') === 0) { - options.version = 'v1'; - } - - const Service = servicesByVersion[serviceName][options.version]; - - if (!Service) { - throw new Error('Unable to find ' + serviceName + ' version ' + options.version); - } - - return new Service(options); - } - }); -}); - -// removed services -// we don't want these services listed (so non-enumerable), but we do want a clear error message -// if old code happens to try using one -['concept_insights', 'relationship_extraction', 'message_resonance', 'question_and_answer', 'visual_insights', 'concept_expansion'].forEach(function( - serviceName -) { - Object.defineProperty(exports, serviceName, { - enumerable: false, - configurable: true, - writable: true, - value: function() { - throw new Error('The ' + serviceName + ' service is no longer available'); - } - }); -}); -['AlchemyVisionV1', 'alchemy_vision'].forEach(function(serviceName) { - Object.defineProperty(exports, serviceName, { - enumerable: false, - configurable: true, - writable: true, - value: function() { - throw new Error('The Alchemy Vision service is no longer available, please use Visual Recognition instead.'); - } - }); -}); diff --git a/karma.conf.js b/karma.conf.js deleted file mode 100644 index 70c6c117cd..0000000000 --- a/karma.conf.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; -// Karma configuration -// Generated on Mon Jul 11 2016 16:25:17 GMT-0400 (EDT) - -module.exports = function(config) { - config.set({ - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'browserify'], - // list of files / patterns to load in the browser - files: [ - // 'test/test.*.js' - // 'test/test.wrapper.js' // works - 'test/test.alchemy_data_news.v1.js' - ], - // list of files to exclude - exclude: [], - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - 'test/test.*.js': ['browserify'] - }, - browserify: { - debug: true, - // transform is for browserify plugins: - // 'brfs' makes fs.read* work (used in tests) - // 'browserify-shim' wraps non-browserify modules - // 'envify' makes process.env work - // etc... - transform: ['brfs'] - }, - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - // web server port - port: 9876, - // enable / disable colors in the output (reporters and logs) - colors: true, - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['Chrome', 'Firefox'], - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }); -}; diff --git a/language-translation/v2.js b/language-translation/v2.js deleted file mode 100644 index ed90684db1..0000000000 --- a/language-translation/v2.js +++ /dev/null @@ -1,221 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const extend = require('extend'); -const pick = require('object.pick'); -const isStream = require('isstream'); -const helper = require('../lib/helper'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {string} [params.url=https://gateway.watsonplatform.net/language-translation/api] The service URL. - * @param {string} params.username Username - * @param {string} params.password Password - * @constructor - */ -function LanguageTranslationV2(options) { - BaseService.call(this, options); -} -util.inherits(LanguageTranslationV2, BaseService); -LanguageTranslationV2.prototype.name = 'language_translation'; -LanguageTranslationV2.prototype.version = 'v2'; -LanguageTranslationV2.URL = 'https://gateway.watsonplatform.net/language-translation/api'; - -/** - * Return the translation models - */ - -/** - * Return the translation models - * @param {string} params.default Query filters to check if the model is - * the default one used when only source - * and target languages are specified. - * @param {string} params.source Filter by source language - * @param {string} params.target Filter by target language - */ -LanguageTranslationV2.prototype.getModels = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - method: 'GET', - url: '/v2/models', - qs: pick(params, ['default', 'source', 'target']), - json: true - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Return the translation model - * @param {string} params.model_id The model identifier - */ -LanguageTranslationV2.prototype.getModel = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - method: 'GET', - url: '/v2/models/{model_id}', - path: pick(params, ['model_id']), - json: true - }, - requiredParams: ['model_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Creates a translation model - * @param {string} params.base_model_id The base model identifier - * @param {string} params.name The model name - * @param {stream} params.forced_glossary A UTF-8 encoded TMX file that contains pairs of matching terms in the source and target language that are seen as absolute by the system. This file completely overwrites the original domain data. - * @param {stream} params.parallel_corpus A UTF-8 encoded TMX file that contains matching phrases in the source and target language that serve as examples for Watson. Parallel corpora differ from glossaries because they do not overwrite the original domain data. - * @param {stream} params.monolingual_corpus A UTF-8 encoded plain text file that contains a body of text in the target language that is related to what you are translating. A monolingual corpus helps improve literal translations to be more fluent and human. - */ - -LanguageTranslationV2.prototype.createModel = function(params, callback) { - params = params || {}; - - const missingParams = helper.getMissingParams(params, ['base_model_id']); - if (missingParams) { - callback(missingParams); - return; - } - - const inputTypes = ['forced_glossary', 'parallel_corpus', 'monolingual_corpus']; - - for (const type in inputTypes) { - if (inputTypes.hasOwnProperty(type)) { - if (params[inputTypes[type]] && !isStream(params[inputTypes[type]])) { - callback(new Error(inputTypes[type] + ' is not a standard Node.js Stream')); - return; - } - } - } - - const parameters = { - options: { - method: 'POST', - url: '/v2/models', - qs: pick(params, ['name', 'base_model_id']), - formData: pick(params, inputTypes), - json: true - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Deletes a model - * @param {string} params.model_id The model identifier - */ -LanguageTranslationV2.prototype.deleteModel = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - method: 'DELETE', - url: '/v2/models/{model_id}', - path: pick(params, ['model_id']), - json: true - }, - requiredParams: ['model_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Translate pharagraphs from one language into another - * @param {string} params.source Source language - * @param {string} params.target Target language - */ -LanguageTranslationV2.prototype.translate = function(params, callback) { - params = params || {}; - - if (!(params.model_id || (params.source && params.target))) { - callback(new Error('Missing required parameters: model_id or source and target')); - return; - } - const parameters = { - options: { - url: '/v2/translate', - method: 'POST', - json: true, - body: pick(params, ['source', 'target', 'text', 'model_id']) - }, - requiredParams: ['text'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Returns the identifiable languages - */ -LanguageTranslationV2.prototype.getIdentifiableLanguages = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v2/identifiable_languages', - method: 'GET' - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Identify the text based on the identifiable languages - * @param {string} params.text text to identify - */ -LanguageTranslationV2.prototype.identify = function(params, callback) { - if (!params || !params.text) { - callback(new Error('Missing required parameters: text')); - return; - } - - const parameters = { - options: { - url: '/v2/identify', - method: 'POST', - body: params.text - }, - defaultOptions: extend(true, {}, this._options, { - headers: { - accept: 'application/json', - 'content-type': 'text/plain' - } - }) - }; - - return requestFactory(parameters, callback); -}; - -module.exports = LanguageTranslationV2; diff --git a/language-translator/v2.js b/language-translator/v2.js deleted file mode 100755 index c267a94794..0000000000 --- a/language-translator/v2.js +++ /dev/null @@ -1,238 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const extend = require('extend'); -const pick = require('object.pick'); -const isStream = require('isstream'); -const helper = require('../lib/helper'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {string} [params.url=https://gateway.watsonplatform.net/language-translation/api] The service URL. - * @param {string} params.username Username - * @param {string} params.password Password - * @constructor - */ -function LanguageTranslatorV2(options) { - // Welp, this is awkward. Originally the rename was *just* a rename, but then (after the SDK was updated, - // but before the backend was updated), it was decided that the billing should be simplified at the same time. - // That's a solid improvement, but it means that the SDK now needs to support both services independently, - // and correcting the default URL here will break older code, so it must be reserved for a major release. - // todo: consider checking for options.url === LanguageTranslationV2.URL and also throw this warning then. - // (This probably does't matter since the api didn't change) - if (!options || !options.url) { - const err = new Error( - 'LanguageTranslatorV2 currently defaults to the url for LanguageTranslationV2, ' + - 'but this will change in the next major release of the watson-developer-cloud Node.js SDK. ' + - 'Please either specify the url https://gateway.watsonplatform.net/language-translator/api or else use ' + - 'LanguageTranslationV2. ' + - 'See http://www.ibm.com/watson/developercloud/doc/language-translator/migrating.shtml for more details.' - ); - // eslint-disable-next-line no-console - console.warn(err); - } - - BaseService.call(this, options); -} -util.inherits(LanguageTranslatorV2, BaseService); -LanguageTranslatorV2.prototype.name = 'language_translator'; -LanguageTranslatorV2.prototype.version = 'v2'; -LanguageTranslatorV2.URL = 'https://gateway.watsonplatform.net/language-translation/api'; // This is incorrect and will change in v 3.0.0 -/** - * Return the translation models - */ - -/** - * Return the translation models - * @param {string} params.default Query filters to check if the model is - * the default one used when only source - * and target languages are specified. - * @param {string} params.source Filter by source language - * @param {string} params.target Filter by target language - */ -LanguageTranslatorV2.prototype.getModels = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - method: 'GET', - url: '/v2/models', - qs: pick(params, ['default', 'source', 'target']), - json: true - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Return the translation model - * @param {string} params.model_id The model identifier - */ -LanguageTranslatorV2.prototype.getModel = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - method: 'GET', - url: '/v2/models/{model_id}', - path: pick(params, ['model_id']), - json: true - }, - requiredParams: ['model_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Creates a translation model - * @param {string} params.base_model_id The base model identifier - * @param {string} params.name The model name - * @param {stream} params.forced_glossary A UTF-8 encoded TMX file that contains pairs of matching terms in the source and target language that are seen as absolute by the system. This file completely overwrites the original domain data. - * @param {stream} params.parallel_corpus A UTF-8 encoded TMX file that contains matching phrases in the source and target language that serve as examples for Watson. Parallel corpora differ from glossaries because they do not overwrite the original domain data. - * @param {stream} params.monolingual_corpus A UTF-8 encoded plain text file that contains a body of text in the target language that is related to what you are translating. A monolingual corpus helps improve literal translations to be more fluent and human. - */ - -LanguageTranslatorV2.prototype.createModel = function(params, callback) { - params = params || {}; - - const missingParams = helper.getMissingParams(params, ['base_model_id']); - if (missingParams) { - callback(missingParams); - return; - } - - const inputTypes = ['forced_glossary', 'parallel_corpus', 'monolingual_corpus']; - - for (const type in inputTypes) { - if (inputTypes.hasOwnProperty(type)) { - if (params[inputTypes[type]] && !isStream(params[inputTypes[type]])) { - callback(new Error(inputTypes[type] + ' is not a standard Node.js Stream')); - return; - } - } - } - - const parameters = { - options: { - method: 'POST', - url: '/v2/models', - qs: pick(params, ['name', 'base_model_id']), - formData: pick(params, inputTypes), - json: true - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Deletes a model - * @param {string} params.model_id The model identifier - */ -LanguageTranslatorV2.prototype.deleteModel = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - method: 'DELETE', - url: '/v2/models/{model_id}', - path: pick(params, ['model_id']), - json: true - }, - requiredParams: ['model_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Translate pharagraphs from one language into another - * @param {string} params.source Source language - * @param {string} params.target Target language - */ -LanguageTranslatorV2.prototype.translate = function(params, callback) { - params = params || {}; - - if (!(params.model_id || (params.source && params.target))) { - callback(new Error('Missing required parameters: model_id or source and target')); - return; - } - const parameters = { - options: { - url: '/v2/translate', - method: 'POST', - json: true, - body: pick(params, ['source', 'target', 'text', 'model_id']) - }, - requiredParams: ['text'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Returns the identifiable languages - */ -LanguageTranslatorV2.prototype.getIdentifiableLanguages = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v2/identifiable_languages', - method: 'GET' - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Identify the text based on the identifiable languages - * @param {string} params.text text to identify - */ -LanguageTranslatorV2.prototype.identify = function(params, callback) { - if (!params || !params.text) { - callback(new Error('Missing required parameters: text')); - return; - } - - const parameters = { - options: { - url: '/v2/identify', - method: 'POST', - body: params.text - }, - defaultOptions: extend(true, {}, this._options, { - headers: { - accept: 'application/json', - 'content-type': 'text/plain' - } - }) - }; - - return requestFactory(parameters, callback); -}; - -module.exports = LanguageTranslatorV2; diff --git a/lib/alchemy_endpoints.json b/lib/alchemy_endpoints.json deleted file mode 100644 index 70f1f9f4f4..0000000000 --- a/lib/alchemy_endpoints.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "entities" : { - "text" : "/text/TextGetRankedNamedEntities", - "html" : "/html/HTMLGetRankedNamedEntities", - "url" : "/url/URLGetRankedNamedEntities" - }, - - "keywords": { - "text" : "/text/TextGetRankedKeywords", - "html" : "/html/HTMLGetRankedKeywords", - "url" : "/url/URLGetRankedKeywords" - }, - - "concepts": { - "text" : "/text/TextGetRankedConcepts", - "html" : "/html/HTMLGetRankedConcepts", - "url" : "/url/URLGetRankedConcepts" - }, - - "sentiment": { - "text" : "/text/TextGetTextSentiment", - "html" : "/html/HTMLGetTextSentiment", - "url" : "/url/URLGetTextSentiment" - }, - - "sentiment_targeted": { - "text" : "/text/TextGetTargetedSentiment", - "html" : "/html/HTMLGetTargetedSentiment", - "url" : "/url/URLGetTargetedSentiment" - }, - - "relations": { - "text" : "/text/TextGetRelations", - "html" : "/html/HTMLGetRelations", - "url" : "/url/URLGetRelations" - }, - - "language": { - "text" : "/text/TextGetLanguage", - "html" : "/html/HTMLGetLanguage", - "url" : "/url/URLGetLanguage" - }, - - "text": { - "html" : "/html/HTMLGetText", - "url" : "/url/URLGetText" - }, - - "category": { - "text" : "/text/TextGetCategory", - "url" : "/url/URLGetCategory" - }, - - "publication_date": { - "html" : "/html/HTMLGetPubDate", - "url" : "/url/URLGetPubDate" - }, - - "extract_dates": { - "html" : "/html/HTMLExtractDates", - "url" : "/url/URLExtractDates", - "text" : "/text/TextExtractDates" - }, - - "text_raw": { - "html" : "/html/HTMLGetRawText", - "url" : "/url/URLGetRawText" - }, - - "authors": { - "html" : "/html/HTMLGetAuthors", - "url" : "/url/URLGetAuthors" - }, - - "feeds": { - "html" : "/html/HTMLGetFeedLinks", - "url" : "/url/URLGetFeedLinks" - }, - - "microformats": { - "html" : "/html/HTMLGetMicroformatData", - "url" : "/url/URLGetMicroformatData" - }, - - "taxonomy": { - "text" : "/text/TextGetRankedTaxonomy", - "html" : "/html/HTMLGetRankedTaxonomy", - "url" : "/url/URLGetRankedTaxonomy" - }, - - "combined": { - "text" : "/text/TextGetCombinedData", - "html" : "/html/HTMLGetCombinedData", - "url" : "/url/URLGetCombinedData" - }, - - "emotion": { - "text" : "/text/TextGetEmotion", - "html" : "/html/HTMLGetEmotion", - "url" : "/url/URLGetEmotion" - }, - - "emotion_targeted": { - "text" : "/text/TextGetTargetedEmotion", - "html" : "/html/HTMLGetTargetedEmotion", - "url" : "/url/URLGetTargetedEmotion" - }, - - "image_link": { - "html" : "/html/HTMLGetImage", - "url" : "/url/URLGetImage" - }, - - "image_keywords": { - "image" : "/image/ImageGetRankedImageKeywords", - "url" : "/url/URLGetRankedImageKeywords" - }, - - "image_recognition": { - "image" : "/image/ImageGetRankedImageFaceTags", - "url" : "/url/URLGetRankedImageFaceTags" - }, - - "image_scene_text": { - "image": "/image/ImageGetRankedImageSceneText", - "url": "/url/URLGetRankedImageSceneText" - }, - - "title": { - "url": "/url/URLGetTitle", - "html": "/html/HTMLGetTitle" - }, - - "typed_relations": { - "url": "/url/URLGetTypedRelations", - "text": "/text/TextGetTypedRelations", - "html": "/html/HTMLGetTypedRelations" - } -} diff --git a/lib/alchemy_error_formatter.js b/lib/alchemy_error_formatter.js deleted file mode 100644 index 3ec299cb08..0000000000 --- a/lib/alchemy_error_formatter.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright 2014 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const extend = require('extend'); - -module.exports = function alchemyErrorFormatter(cb) { - return function(err, result, response) { - if (err) { - cb(err, result); - } else { - if (result.status !== 'OK') { - err = new Error(result.statusInfo || response['headers']['x-alchemyapi-error-msg']); - err.code = 400; - err.body = result; - if (typeof result === 'string') { - err.message += ' Response cannot be parsed as JSON: ' + result; - } else { - extend(err, result); - } - result = null; - } - cb(err, result); - } - }; -}; diff --git a/lib/base_service.js b/lib/base_service.js deleted file mode 100644 index 7735749769..0000000000 --- a/lib/base_service.js +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Copyright 2014 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; -const extend = require('extend'); -const vcapServices = require('vcap_services'); -const helper = require('./helper'); -const request = require('request'); -const bufferFrom = require('buffer-from'); // new Buffer() is deprecated, replaced with Buffer.from() in node v4.5.0+ - this uses the new api when possible but falls back to the old one otherwise - -/** - * Internal base class that other services inherit from - * @param {Object} options - * @param {String} [options.username] - required unless use_unauthenticated is set - * @param {String} [options.password] - required unless use_unauthenticated is set - * @param {Boolean} [options.use_unauthenticated] - skip credential requirement - * @param {Object} [options.headers] - * @param {Boolean} [options.headers.X-Watson-Learning-Opt-Out=false] - opt-out of data collection - * @param {String} [options.url] - override default service base url - * @private - * @abstract - * @constructor - */ -function BaseService(user_options) { - if (!(this instanceof BaseService)) { - // it might be better to just create a new instance and return that.. but that can't be done here, it has to be done in each individual service. So this is still a good failsafe even in that case. - throw new Error('"new" keyword required to create Watson service instances'); - } - let options = extend({}, user_options); - - options = this.initCredentials(options); - - if (options.url) { - options.url = helper.stripTrailingSlash(options.url); - } - - this._options = extend({ qs: {}, url: this.constructor.URL }, this.serviceDefaults, options); -} - -/** - * @private - * @param {Object} options - * @return {*} - */ -BaseService.prototype.initCredentials = function(options) { - if (options.token) { - options.headers = options.headers || {}; - options.headers['X-Watson-Authorization-Token'] = options.token; - return options; - } - - options.jar = request.jar(); - - // Get credentials from environment properties or Bluemix - // but prefer credentials provided pragmatically! - options = extend({}, this.getCredentialsFromBluemix(this.name), this.getCredentialsFromEnvironment(this.name), options); - - if (!options.use_unauthenticated) { - if (!options.username || !options.password) { - throw new Error('Argument error: username and password are required unless use_unauthenticated is set'); - } - - // Calculate and add Authorization header to base options - const authHeader = { - Authorization: 'Basic ' + bufferFrom(options.username + ':' + options.password).toString('base64') - }; - options.headers = extend(authHeader, options.headers); - } - - return options; -}; - -/** - * Pulls credentials from env properties - * - * Property checked is uppercase service.name suffixed by _USERNAME and _PASSWORD - * - * For example, if service.name is speech_to_text, env properties are SPEECH_TO_TEXT_USERNAME and SPEECH_TO_TEXT_PASSWORD - * - * @private - * @param name - * @return {{username: String|undefined, password: String|undefined, url: String|undefined}} - */ -BaseService.prototype.getCredentialsFromEnvironment = function(name) { - name = name.toUpperCase(); - return { - username: process.env[name + '_USERNAME'], - password: process.env[name + '_PASSWORD'], - url: process.env[name + '_URL'] - }; -}; - -/** - * Pulls credentials from VCAP_SERVICES env property that bluemix sets - * - * @private - * @return {Object} - */ -BaseService.prototype.getCredentialsFromBluemix = function(vcap_services_name) { - return vcapServices.getCredentials(vcap_services_name); -}; - -/** - * Retrieve this service's credentials - useful for passing to the authorization service - * - * Only returns a URL when token auth is used. - * - * @return {{username: String, password: String, url: String}} - */ -BaseService.prototype.getCredentials = function() { - return { - username: this._options.username, - password: this._options.password, - url: this._options.url - }; -}; - -module.exports = BaseService; diff --git a/lib/base_service_alchemy.js b/lib/base_service_alchemy.js deleted file mode 100644 index 5a41a31cfa..0000000000 --- a/lib/base_service_alchemy.js +++ /dev/null @@ -1,69 +0,0 @@ -'use strict'; - -const util = require('util'); -const extend = require('extend'); -const BaseService = require('./base_service'); - -/** - * Variation of BaseService for Alchemy API services (and Visual Recognition v3) - * @param {Object} options - * @constructor - * @abstract - * @private - */ -function BaseServiceAlchemy(options) { - BaseService.call(this, options); -} -util.inherits(BaseServiceAlchemy, BaseService); - -/** - * Grab the api key - * - * @param {Object} options - * @private - */ -BaseServiceAlchemy.prototype.initCredentials = function(options) { - options.apikey = options.apikey || options.api_key; - options = extend( - {}, - this.getCredentialsFromBluemix('alchemy_api'), // this is the same for all Alchemy* services - this.getCredentialsFromEnvironment(this.name), - options - ); - if (!options.use_unauthenticated) { - if (!options.apikey) { - throw new Error('Argument error: api_key was not specified'); - } - // Per documentation, Alchemy* services use `apikey`, but Visual Recognition uses (`api_key`) - // (Either will work in most cases, but there are a few exceptions.) - options.qs = extend({ apikey: options.apikey }, options.qs); - } - return options; -}; - -/** - * Pulls api_key from SERVICE_NAME_API_KEY env property - * - * @param {String} name - * @return {{api_key: String|undefined}} - */ -BaseServiceAlchemy.prototype.getCredentialsFromEnvironment = function(name) { - return { - apikey: process.env[name.toUpperCase() + '_API_KEY'], - url: process.env[name + '_URL'] - }; -}; - -/** - * Retrieve this service's credentials - useful for passing to the authorization service - * @type {BaseService} - * @return {{username: String, password: String, url: String}} - */ -BaseServiceAlchemy.prototype.getCredentials = function() { - return { - apikey: this._options.apikey, - url: this._options.url - }; -}; - -module.exports = BaseServiceAlchemy; diff --git a/lib/common.ts b/lib/common.ts new file mode 100644 index 0000000000..0f3abc17ea --- /dev/null +++ b/lib/common.ts @@ -0,0 +1,32 @@ +import os = require('os'); + +// tslint:disable-next-line:no-var-requires +const pkg = require('../package.json'); + +export type SdkHeaders = { + 'User-Agent': string; + 'X-IBMCloud-SDK-Analytics': string; +} + +export function getSdkHeaders(serviceName: string, serviceVersion: string, operationId: string): SdkHeaders | {} { + // disable analytics headers in the browser - they cause cors issues + const isBrowser = typeof window !== 'undefined'; + if (isBrowser) { + return {}; + } + + const sdkName = 'watson-apis-node-sdk'; + const sdkVersion = pkg.version; + const osName = os.platform(); + const osVersion = os.release(); + const nodeVersion = process.version; + + // note - all node methods are asynchronous, 'async' will always be true + + const headers = { + 'User-Agent': `${sdkName}-${sdkVersion} ${osName} ${osVersion} ${nodeVersion}`, + 'X-IBMCloud-SDK-Analytics': `service_name=${serviceName};service_version=${serviceVersion};operation_id=${operationId};async=true`, + } + + return headers; +} diff --git a/lib/helper.js b/lib/helper.js deleted file mode 100644 index 728725284d..0000000000 --- a/lib/helper.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright 2014 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -module.exports = { - stripTrailingSlash: function(url) { - // Match a forward slash / at the end of the string ($) - return url.replace(/\/$/, ''); - }, - /** - * Validates that all required params are provided - * @param params - * @param requires - * @return {Error|null} - */ - getMissingParams: function(params, requires) { - let missing; - - if (!requires) { - return null; - } else if (!params) { - missing = requires; - } else { - missing = []; - - requires.forEach(function(require) { - if (!params[require]) { - missing.push(require); - } - }); - } - - return missing.length > 0 ? new Error('Missing required parameters: ' + missing.join(', ')) : null; - }, - /** - * Return true if 'text' is html - * @param {String} text The 'text' to analyze - * @return {Boolean} true if 'text' has html tags - */ - isHTML: function(text) { - return /<[a-z][\s\S]*>/i.test(text); - }, - /** - * Returns the first match from formats that is key the params map - * otherwise null - * @param {Object} params The parameters - * @param {Array} requires The keys we want to check - */ - getFormat: function(params, formats) { - if (!formats || !params) { - return null; - } - - for (let i = 0; i < formats.length; i++) { - if (formats[i] in params) { - return formats[i]; - } - } - return null; - } -}; diff --git a/lib/recognize-stream.ts b/lib/recognize-stream.ts new file mode 100644 index 0000000000..1bca322cfd --- /dev/null +++ b/lib/recognize-stream.ts @@ -0,0 +1,481 @@ +/** + * (C) Copyright IBM Corp. 2014, 2024. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +import { RequestOptions } from 'http'; +import { Authenticator, contentType, qs } from 'ibm-cloud-sdk-core'; +import { Duplex, DuplexOptions } from 'stream'; +import { w3cwebsocket as w3cWebSocket } from 'websocket'; +import { RecognizeWebSocketParams } from '../speech-to-text/v1'; +import { extractTransactionId, processUserParameters } from './websocket-utils'; + +interface WritableState { + highWaterMark: number; +} + +interface RecognizeStream extends Duplex { + _writableState: WritableState; + readableObjectMode: boolean; +} + +/** + * pipe()-able Node.js Readable/Writeable stream - accepts binary audio and emits text in its `data` events. + * Also emits `results` events with interim results and other data. + * + * Cannot be instantiated directly, instead created by calling #recognizeUsingWebSocket() + * + * Uses WebSockets under the hood. For audio with no recognizable speech, no `data` events are emitted. + * @param {Object} options + * @constructor + */ +class RecognizeStream extends Duplex { + static WEBSOCKET_CONNECTION_ERROR: string = 'WebSocket connection error'; + static ERROR_UNRECOGNIZED_FORMAT: string = 'UNRECOGNIZED_FORMAT'; + + static getContentType(buffer: Buffer): string { + // the substr really shouldn't be necessary, but there's a bug somewhere that can cause buffer.slice(0,4) to return + // the entire contents of the buffer, so it's a failsafe to catch that + return contentType.fromHeader(buffer); + } + + private options: RecognizeStream.Options; + private authenticator: Authenticator; + private listening: boolean; + private initialized: boolean; + private finished: boolean; + private socket: w3cWebSocket; + + /** + * pipe()-able Node.js Duplex stream - accepts binary audio and emits text/objects in it's `data` events. + * + * Uses WebSockets under the hood. For audio with no recognizable speech, no `data` events are emitted. + * + * By default, only finalized text is emitted in the data events, however when `objectMode`/`readableObjectMode` is enabled, both interim and final results objects are emitted. + * WriteableElementStream uses this, for example, to live-update the DOM with word-by-word transcriptions. + * + * Note that the WebSocket connection is not established until the first chunk of data is recieved. This allows for auto-detection of content type (for wav/flac/opus audio). + * + * @param {Options} options + * @param {Authenticator} options.authenticator - Authenticator to add Authorization header + * @param {string} [options.serviceUrl] - Base url for service (default='wss://api.us-south.speech-to-text.watson.cloud.ibm.com') + * @param {OutgoingHttpHeaders} [options.headers] - Only works in Node.js, not in browsers. Allows for custom headers to be set, including an Authorization header (preventing the need for auth tokens) + * @param {boolean} [options.readableObjectMode] - Emit `result` objects instead of string Buffers for the `data` events. Does not affect input (which must be binary) + * @param {boolean} [options.objectMode] - Alias for readableObjectMode + * @param {boolean} [options.disableSslVerification] - If true, disable SSL verification for the WebSocket connection (default=false) + * @param {Agent} [options.agent] - custom http(s) agent, useful for using the sdk behind a proxy (Node only) + * @param {string} [options.accessToken] - Bearer token to put in query string + * @param {string} [options.watsonToken] - Valid Watson authentication token (for Cloud Foundry) + * @param {string} [options.model] - The identifier of the model that is to be used for all recognition requests sent over the connection + * @param {string} [options.languageCustomizationId] - The customization ID (GUID) of a custom language model that is to be used for all requests sent over the connection + * @param {string} [options.acousticCustomizationId] - The customization ID (GUID) of a custom acoustic model that is to be used for the request + * @param {string} [options.baseModelVersion] - The version of the specified base model that is to be used for all requests sent over the connection + * @param {boolean} [options.xWatsonLearningOptOut] - Indicates whether IBM can use data that is sent over the connection to improve the service for future users (default=false) + * @param {string} [options.xWatsonMetadata] - Associates a customer ID with all data that is passed over the connection. The parameter accepts the argument customer_id={id}, where {id} is a random or generic string that is to be associated with the data + * @param {string} [options.contentType] - The format (MIME type) of the audio + * @param {number} [options.customizationWeight] - Tell the service how much weight to give to words from the custom language model compared to those from the base model for the current request + * @param {number} [options.inactivityTimeout] - The time in seconds after which, if only silence (no speech) is detected in the audio, the connection is closed (default=30) + * @param {boolean} [options.interimResults] - If true, the service returns interim results as a stream of JSON SpeechRecognitionResults objects (default=false) + * @param {string[]} [options.keywords] - An array of keyword strings to spot in the audio + * @param {number} [options.keywordsThreshold] - A confidence value that is the lower bound for spotting a keyword + * @param {number} [options.maxAlternatives] - The maximum number of alternative transcripts that the service is to return (default=1) + * @param {number} [options.wordAlternativesThreshold] - A confidence value that is the lower bound for identifying a hypothesis as a possible word alternative + * @param {boolean} [options.wordConfidence] - If true, the service returns a confidence measure in the range of 0.0 to 1.0 for each word (default=false) + * @param {boolean} [options.timestamps] - If true, the service returns time alignment for each word (default=false) + * @param {boolean} [options.profanityFilter] - If true, the service filters profanity from all output except for keyword results by replacing inappropriate words with a series of asterisks (default=true) + * @param {boolean} [options.smartFormatting] - If true, the service converts dates, times, series of digits and numbers, phone numbers, currency values, and internet addresses into more readable, conventional representations (default=false) + * @param {number} [params.smartFormattingVersion] - Smart formatting version for large speech models and next-generation models + * @param {boolean} [options.speakerLabels] - If true, the response includes labels that identify which words were spoken by which participants in a multi-person exchange (default=false) + * @param {string} [options.grammarName] - The name of a grammar that is to be used with the recognition request + * @param {boolean} [options.redaction] - If true, the service redacts, or masks, numeric data from final transcripts (default=false) + * @param {boolean} [options.processingMetrics] - If true, requests processing metrics about the service's transcription of the input audio (default=false) + * @param {number} [options.processingMetricsInterval] - Specifies the interval in seconds at which the service is to return processing metrics + * @param {boolean} [options.audioMetrics] - If true, requests detailed information about the signal characteristics of the input audio (detailed=false) + * @param {number} [options.endOfPhraseSilenceTime] - If `true`, specifies the duration of the pause interval at which the service splits a transcript into multiple final results + * @param {boolean} [options.splitTranscriptAtPhraseEnd] - If `true`, directs the service to split the transcript into multiple final results based on semantic features of the input + * @param {number} [options.speechDetectorSensitivity] - The sensitivity of speech activity detection that the service is to perform + * @param {number} [options.backgroundAudioSuppression] - The level to which the service is to suppress background audio based on its volume to prevent it from being transcribed as speech + * @param {boolean} [params.lowLatency] - If `true` for next-generation `Multimedia` and `Telephony` models that support low latency, directs the service to produce results even more quickly than it usually does + * @param {number} [params.sadModule] - Detects speech boundaries within the audio stream with better performance, improved noise suppression, faster responsiveness, and increased accuracy. + * @constructor + */ + constructor(options: RecognizeStream.Options) { + // this stream only supports objectMode on the output side. + // It must receive binary data input. + if (options.objectMode) { + options.readableObjectMode = true; + delete options.objectMode; + } + super(options); + if (this.readableObjectMode === undefined) { + this.readableObjectMode = options.readableObjectMode === true; + } + this.options = options; + this.listening = false; + this.initialized = false; + this.finished = false; + this.authenticator = options.authenticator; + } + + initialize() { + const options = this.options; + + // compatibility + if (options['X-WDC-PL-OPT-OUT'] && !options['X-Watson-Learning-Opt-Out']) { + options['X-Watson-Learning-Opt-Out'] = options['X-WDC-PL-OPT-OUT']; + } + + // process query params + const queryParamsAllowed: string[] = [ + 'access_token', + 'watson-token', + 'model', + 'language_customization_id', + 'acoustic_customization_id', + 'base_model_version', + 'x-watson-learning-opt-out', + 'x-watson-metadata', + ]; + const queryParams = processUserParameters(options, queryParamsAllowed); + if (!queryParams.language_customization_id && !queryParams.model) { + queryParams.model = 'en-US_BroadbandModel'; + } + const queryString = qs.stringify(queryParams); + + // synthesize the url + const url = + (options.serviceUrl || 'wss://api.us-south.speech-to-text.watson.cloud.ibm.com' + ).replace(/^http/, 'ws') + + '/v1/recognize?' + + queryString; + + // process opening payload params + const openingMessageParamsAllowed: string[] = [ + 'customization_weight', + 'processing_metrics', + 'processing_metrics_interval', + 'audio_metrics', + 'inactivity_timeout', + 'timestamps', + 'word_confidence', + 'content-type', + 'interim_results', + 'keywords', + 'keywords_threshold', + 'max_alternatives', + 'word_alternatives_threshold', + 'profanity_filter', + 'smart_formatting', + 'smart_formatting_version', + 'speaker_labels', + 'grammar_name', + 'redaction', + 'end_of_phrase_silence_time', + 'split_transcript_at_phrase_end', + 'speech_detector_sensitivity', + 'background_audio_suppression', + 'low_latency', + 'sad_module' + ]; + const openingMessage = processUserParameters(options, openingMessageParamsAllowed); + openingMessage.action = 'start'; + + const self = this; + + // node params: requestUrl, protocols, origin, headers, extraRequestOptions, clientConfig options + // browser params: requestUrl, protocols (all others ignored) + + // for the last argument, `tlsOptions` gets passed to Node's `http` library, + // which allows us to pass a rejectUnauthorized option + // for disabling SSL verification (for ICP) + + // add custom agent in the request options if given by user + // default request options to null + const { agent } = options; + const requestOptions: RequestOptions = agent ? { agent } : null; + + const socket = (this.socket = new w3cWebSocket( + url, + null, + null, + options.headers, + requestOptions, + { tlsOptions: { rejectUnauthorized: !options.disableSslVerification }} + )); + + // when the input stops, let the service know that we're done + self.on('finish', self.finish.bind(self)); + + /** + * This can happen if the credentials are invalid - in that case, the response from DataPower doesn't include the + * necessary CORS headers, so JS can't even read it :( + * + * @param {Event} event - event object with essentially no useful information + */ + socket.onerror = (event) => { + self.listening = false; + const err = new Error('WebSocket connection error'); + err.name = RecognizeStream.WEBSOCKET_CONNECTION_ERROR; + err['event'] = event; + self.emit('error', err); + self.push(null); + }; + + this.socket.onopen = () => { + self.sendJSON(openingMessage); + /** + * emitted once the WebSocket connection has been established + * @event RecognizeStream#open + */ + self.emit('open'); + }; + + this.socket.onclose = (e) => { + self.listening = false; + self.push(null); + /** + * @event RecognizeStream#close + * @param {Number} reasonCode + * @param {String} description + */ + self.emit('close', e.code, e.reason); + }; + + /** + * @event RecognizeStream#error + * @param {String} msg custom error message + * @param {*} [frame] unprocessed frame (should have a .data property with either string or binary data) + * @param {Error} [err] + */ + function emitError(msg, frame, err?) { + if (err) { + err.message = msg + ' ' + err.message; + } else { + err = new Error(msg); + } + err.raw = frame; + self.emit('error', err); + } + + socket.onmessage = (frame) => { + if (typeof frame.data !== 'string') { + return emitError('Unexpected binary data received from server', frame); + } + + let data; + try { + data = JSON.parse(frame.data); + } catch (jsonEx) { + return emitError('Invalid JSON received from service:', frame, jsonEx); + } + + /** + * Emit any messages received over the wire, mainly used for debugging. + * + * @event RecognizeStream#message + * @param {Object} message - frame object with a data attribute that's either a string or a Buffer/TypedArray + * @param {Object} [data] - parsed JSON object (if possible); + */ + self.emit('message', frame, data); + + if (data.error) { + emitError(data.error, frame); + } else if (data.state === 'listening') { + // this is emitted both when the server is ready for audio, and after we send the close message to indicate that it's done processing + if (self.listening) { + self.listening = false; + socket.close(); + } else { + self.listening = true; + /** + * Emitted when the Watson Service indicates readiness to transcribe audio. Any audio sent before this point will be buffered until now. + * @event RecognizeStream#listening + */ + self.emit('listening'); + } + } else { + if (options.readableObjectMode) { + /** + * Object with interim or final results, possibly including confidence scores, alternatives, and word timing. + * @event RecognizeStream#data + * @param {Object} data + */ + self.push(data); + } else if (Array.isArray(data.results)) { + data.results.forEach((result) => { + if (result.final && result.alternatives) { + /** + * Finalized text + * @event RecognizeStream#data + * @param {String} transcript + */ + self.push(result.alternatives[0].transcript, 'utf8'); + } + }); + } + } + }; + + this.initialized = true; + } + + sendJSON(msg): void { + /** + * Emits any JSON object sent to the service from the client. Mainly used for debugging. + * @event RecognizeStream#send-json + * @param {Object} msg + */ + this.emit('send-json', msg); + return this.socket.send(JSON.stringify(msg)); + } + + sendData(data): void { + /** + * Emits any Binary object sent to the service from the client. Mainly used for debugging. + * @event RecognizeStream#send-data + * @param {Object} msg + */ + this.emit('send-data', data); + return this.socket.send(data); + } + + /** + * Flow control - don't ask for more data until we've finished what we have + * + * Notes: + * + * This limits upload speed to 100 * options.highWaterMark / second. + * + * The default highWaterMark is 16kB, so the default max upload speed is ~1.6MB/s. + * + * Microphone input provides audio at a (downsampled) rate of: + * 16000 samples/s * 16-bits * 1 channel = 32kB/s + * (note the bits to Bytes conversion there) + * + * @private + * @param {Function} next + */ + afterSend(next): void { + if ( + this.socket.bufferedAmount <= (this._writableState.highWaterMark || 0) + ) { + process.nextTick(next); + } else { + setTimeout(this.afterSend.bind(this, next), 10); + } + } + + /** + * Prevents any more audio from being sent over the WebSocket and gracefully closes the connection. + * Additional data may still be emitted up until the `end` event is triggered. + */ + stop(): void { + /** + * Event emitted when the stop method is called. Mainly for synchronising with file reading and playback. + * @event RecognizeStream#stop + */ + this.emit('stop'); + this.finish(); + } + + _read(): void /* size*/ { + // there's no easy way to control reads from the underlying library + // so, the best we can do here is a no-op + } + + + _write(chunk, encoding, callback): void { + this.authenticator.authenticate(this.options).then( + () => { + const self = this; + if (self.finished) { + // can't send any more data after the stop message (although this shouldn't happen normally...) + return; + } + + if (!this.initialized) { + if (!this.options.contentType) { + const ct = RecognizeStream.getContentType(chunk); + if (ct) { + this.options.contentType = ct; + } else { + const error = new Error( + 'Unable to determine content-type from file header, please specify manually.' + ); + error.name = RecognizeStream.ERROR_UNRECOGNIZED_FORMAT; + this.emit('error', error); + this.push(null); + return; + } + } + this.initialize(); + + this.once('open', () => { + self.sendData(chunk); + self.afterSend(callback); + }); + } else { + self.sendData(chunk); + this.afterSend(callback); + } + }, + err => { + this.emit('error', err); + this.push(null); + } + ); + } + + finish(): void { + // this is called both when the source stream finishes, and when .stop() is fired, but we only want to send the stop message once. + if (this.finished) { + return; + } + this.finished = true; + const self = this; + const closingMessage = { action: 'stop' }; + if (self.socket && self.socket.readyState === self.socket.OPEN) { + self.sendJSON(closingMessage); + } else { + this.once('open', () => { + self.sendJSON(closingMessage); + }); + } + } + + /** + * Returns a Promise that resolves with Watson Transaction ID from the X-Transaction-ID header + * + * Works in Node.js but not in browsers (the W3C WebSocket API does not expose headers) + * + * @return Promise + */ + getTransactionId(): Promise { + return extractTransactionId(this); + } +} + +namespace RecognizeStream { + export interface Options extends DuplexOptions, RecognizeWebSocketParams { + // these options represent the superset of the base params, + // query params, and opening message params, with the keys + // in lowerCamelCase format so we can expose a consistent style + // to the user. + authenticator: Authenticator; + disableSslVerification?: boolean; + serviceUrl?: string; + } +} + +export = RecognizeStream; diff --git a/lib/requestwrapper.js b/lib/requestwrapper.js deleted file mode 100644 index bb9e7bab21..0000000000 --- a/lib/requestwrapper.js +++ /dev/null @@ -1,177 +0,0 @@ -/** - * Copyright 2014 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const extend = require('extend'); -const request = require('request'); -const pkg = require('../package.json'); -const helper = require('./helper'); -const readableStream = require('stream').PassThrough; -const isBrowser = typeof window === 'object'; - -/** - * @private - * @param {String} path - * @param {Object} params - * @return {String} - */ -function parsePath(path, params) { - if (!path || !params) { - return path; - } - return Object.keys(params).reduce((parsedPath, param) => { - const value = encodeURIComponent(params[param]); - return parsedPath.replace(new RegExp(`{${param}}`), value); - }, path); -} - -/** - * Check if the service/request have error and try to format them. - * @param {Function} cb the request callback - * @private - */ -function formatErrorIfExists(cb) { - return function(error, response, body) { - // eslint-disable-line complexity - - // If we have an error return it. - if (error) { - // first ensure that it's an instanceof Error - if (!(error instanceof Error)) { - body = error; - error = new Error(error.message || error.error || error); - error.body = body; - } - cb(error, body, response); - return; - } - - try { - // in most cases, request will have already parsed the body as JSON - body = JSON.parse(body); - } catch (e) { - // if it fails, just return the body as-is - } - - // If we have a response and it contains an error - if (body && (body.error || body.error_code)) { - // visual recognition sets body.error to a json object with code/description/error_id instead of putting them top-left - if (typeof body.error === 'object' && body.error.description) { - const errObj = body.error; // just in case there's a body.error.error... - Object.keys(body.error).forEach(function(key) { - body[key] = body.error[key]; - }); - body.error = errObj.description; - } else if (typeof body.error == 'object' && typeof body.error.error == 'object') { - // this can happen with, for example, the conversation createSynonym() API - body.rawError = body.error; - body.error = JSON.stringify(body.error.error); // - } - // language translaton returns json with error_code and error_message - error = new Error(body.error || body.error_message || 'Error Code: ' + body.error_code); - error.code = body.error_code; - Object.keys(body).forEach(function(key) { - error[key] = body[key]; - }); - body = null; - } - - // If we still don't have an error and there was an error... - if (!error && (response.statusCode < 200 || response.statusCode >= 300)) { - // The JSON stringify for the error below is for the Dialog service - // It stringifies "[object Object]" into the correct error (PR #445) - error = new Error(typeof body == 'object' ? JSON.stringify(body) : body); - error.code = response.statusCode; - if (error.code === 401 || error.code === 403) { - error.body = error.message; - error.message = 'Unauthorized: Access is denied due to invalid credentials.'; - } - body = null; - } - cb(error, body, response); - }; -} - -/** - * Creates the request. - * 1. Merge default options with user provided options - * 2. Checks for missing parameters - * 3. Encode path and query parameters - * 4. Call the api - * @private - * @return {ReadableStream|undefined} - */ -function createRequest(parameters, _callback) { - let missingParams = null; - const options = extend(true, {}, parameters.defaultOptions, parameters.options); - const path = options.path; - const body = options.body; // application/json or text/plain - const form = options.form; // application/x-www-form-urlencoded - const formData = options.formData; // application/x-www-form-urlencoded - const qs = options.qs; // Query parameters - - // Provide a default callback if it doesn't exists - const callback = typeof _callback === 'function' ? _callback /* no op */ : function() {}; - - // Missing parameters - if (parameters.options.requiredParams) { - // eslint-disable-next-line no-console - console.warn(new Error('requiredParams set on parameters.options - it should be set directly on parameters')); - } - - missingParams = helper.getMissingParams(parameters.originalParams || extend({}, qs, body, form, formData, path), parameters.requiredParams); - - if (missingParams) { - if (typeof _callback === 'function') { - return callback(missingParams); - } else { - const errorStream = readableStream(); - setTimeout(function() { - errorStream.emit('error', missingParams); - }, 0); - return errorStream; - } - } - - // Path params - options.url = parsePath(options.url, path); - delete options.path; - - // Headers - options.headers = extend({}, options.headers); - - if (!isBrowser) { - options.headers['User-Agent'] = pkg.name + '-nodejs-' + pkg.version; - } - - // Query params - if (options.qs && Object.keys(options.qs).length > 0) { - options.useQuerystring = true; - } - - // Add service default endpoint if options.url start with / - if (options.url.charAt(0) === '/') { - options.url = parameters.defaultOptions.url + options.url; - } - - // Compression support - options.gzip = true; - - return request(options, formatErrorIfExists(callback)); -} - -module.exports = createRequest; diff --git a/lib/synthesize-stream.ts b/lib/synthesize-stream.ts new file mode 100644 index 0000000000..9cfbbd7817 --- /dev/null +++ b/lib/synthesize-stream.ts @@ -0,0 +1,246 @@ +/** + * (C) Copyright IBM Corp. 2018, 2023. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +import { Agent, RequestOptions } from 'http'; +import { Authenticator, qs } from 'ibm-cloud-sdk-core'; +import { Readable, ReadableOptions } from 'stream'; +import { w3cwebsocket as w3cWebSocket } from 'websocket'; +import { SynthesizeWebSocketParams } from '../text-to-speech/v1'; +import { extractTransactionId, processUserParameters } from './websocket-utils'; + +/** + * pipe()-able Node.js Readable stream - accepts text in the constructor and emits binary audio data in its 'message' events + * + * Cannot be instantiated directly, instead created by calling #synthesizeUsingWebSocket() + * + * Uses WebSockets under the hood. + * @param {Object} options + * @constructor + */ +class SynthesizeStream extends Readable { + + static WEBSOCKET_ERROR: string = 'WebSocket error'; + static WEBSOCKET_CONNECTION_ERROR: string = 'WebSocket connection error'; + + private options: SynthesizeStream.Options; + private authenticator: Authenticator; + private socket: w3cWebSocket; + private initialized: boolean; + + + /** + * pipe()-able Node.js Readable stream - accepts text and emits binary audio data in its 'message' events + * + * Uses WebSockets under the hood. + * + * + * Note that the WebSocket connection is not established until the first chunk of data is recieved. This allows for IAM token request management by the SDK. + * + * @param {Options} options + * @param {Authenticator} options.authenticator - Authenticator to add Authorization header + * @param {string} [options.serviceUrl] - Base url for service (default='wss://api.us-south.speech-to-text.watson.cloud.ibm.com') + * @param {OutgoingHttpHeaders} [options.headers] - Only works in Node.js, not in browsers. Allows for custom headers to be set, including an Authorization header (preventing the need for auth tokens) + * @param {boolean} [options.disableSslVerification] - If true, disable SSL verification for the WebSocket connection (default=false) + * @param {Agent} [options.agent] - custom http(s) agent, useful for using the sdk behind a proxy (Node only) + * @param {string} options.text - The text that us to be synthesized + * @param {string} options.accept - The requested format (MIME type) of the audio + * @param {string[]} [options.timings] - An array that specifies whether the service is to return word timing information for all strings of the input text + * @param {string} [options.accessToken] - Bearer token to put in query string + * @param {string} [options.watsonToken] - Valid Watson authentication token (for Cloud Foundry) + * @param {string} [options.voice] - The voice to use for the synthesis (default='en-US_MichaelVoice') + * @param {string} [options.customizationId] - The customization ID (GUID) of a custom voice model that is to be used for the synthesis + * @param {number} [options.ratePercentage] - The percentage change from the default speaking rate of the voice that is used for speech synthesis. + * @param {number} [options.pitchPercentage] - The percentage change from the default speaking pitch of the voice that is used for speech synthesis. + * @param {boolean} [options.xWatsonLearningOptOut] - Indicates whether IBM can use data that is sent over the connection to improve the service for future users (default=false) + * @param {string} [options.xWatsonMetadata] - Associates a customer ID with all data that is passed over the connection. The parameter accepts the argument customer_id={id}, where {id} is a random or generic string that is to be associated with the data + * @constructor + */ + constructor(options: SynthesizeStream.Options) { + super(options); + this.options = options; + this.initialized = false; + this.authenticator = options.authenticator; + } + + initialize() { + const options = this.options; + + // process query params + const queryParamsAllowed = [ + 'access_token', + 'watson-token', + 'voice', + 'customization_id', + 'rate_percentage', + 'pitch_percentage', + 'x-watson-learning-opt-out', + 'x-watson-metadata', + ]; + const queryParams = processUserParameters(options, queryParamsAllowed); + const queryString = qs.stringify(queryParams); + + // synthesize the url + const url = + (options.serviceUrl || 'wss://api.us-south.text-to-speech.watson.cloud.ibm.com') + .replace(/^http/, 'ws') + + '/v1/synthesize?' + + queryString; + + // add custom agent in the request options if given by user + // default request options to null + const { agent } = options; + const requestOptions: RequestOptions = agent ? { agent } : null; + + const socket = (this.socket = new w3cWebSocket( + url, + null, + null, + options.headers, + requestOptions, + { tlsOptions: { rejectUnauthorized: !options.disableSslVerification }} + )); + + // use class context within arrow functions + const self = this; + + socket.onopen = () => { + // process the payload params + const payloadParamsAllowed = [ + 'text', + 'accept', + 'timings', + ]; + const payload = processUserParameters(options, payloadParamsAllowed); + socket.send(JSON.stringify(payload)); + /** + * emitted once the WebSocket connection has been established + * @event SynthesizeStream#open + */ + self.emit('open'); + }; + + socket.onmessage = message => { + const chunk = message.data; + // some info messages are sent as strings, telling the content_type and + // timings. Emit them as separate events, but do not send them along the + // pipe. + if (typeof chunk === 'string') { + try { + const json = JSON.parse(chunk); + if (json['binary_streams']) { + self.emit('binary_streams', message, json); + } + else if (json['marks']) { + self.emit('marks', message, json); + } + else if (json['words']) { + self.emit('words', message, json); + } + else if (json['error']) { + // this should have same structure as onerror emit + const err = new Error(json['error']); + err.name = SynthesizeStream.WEBSOCKET_ERROR; + err['event'] = message; + self.emit('error', err); + } + else if (json['warnings']) { + self.emit('warnings', message, json); + } + } + finally { + self.emit('message', message, chunk); + } + return; + } + + /** + * Emit any messages received over the wire, mainly used for debugging. + * + * @event SynthesizeStream#message + * @param {Object} message - frame object received from service + * @param {Object} data - a data attribute of the frame that's a Buffer/TypedArray + */ + const data = Buffer.from(chunk); + self.emit('message', message, data); + self.push(data); + }; + + socket.onerror = event => { + const err = new Error('WebSocket connection error'); + err.name = SynthesizeStream.WEBSOCKET_CONNECTION_ERROR; + err['event'] = event; + self.emit('error', err); + self.push(null); + }; + + socket.onclose = event => { + self.push(null); + /** + * @event SynthesizeStream#close + * @param {Number} reasonCode + * @param {String} description + */ + self.emit('close', event.code, event.reason); + }; + + this.initialized = true; + } + + _read() { + // even though we aren't controlling the read from websocket, + // we can take advantage of the fact that _read is async and hack + // this funtion to retrieve a token if the service is using IAM auth + this.authenticator.authenticate(this.options).then( + () => { + if (!this.initialized) { + this.initialize(); + } + }, + err => { + this.emit('error', err); + this.push(null); + } + ); + } + + /** + * Returns a Promise that resolves with Watson Transaction ID from the X-Transaction-ID header + * + * Works in Node.js but not in browsers (the W3C WebSocket API does not expose headers) + * + * @return Promise + */ + getTransactionId(): Promise { + return extractTransactionId(this); + } +} + +namespace SynthesizeStream { + // these options represent the superset of the base params, + // query params, and opening message params, with the keys + // in lowerCamelCase format so we can expose a consistent style + // to the user. this object should be updated any time either + // payloadParamsAllowed or queryParamsAllowed is changed + export interface Options extends ReadableOptions, SynthesizeWebSocketParams { + /* base options */ + authenticator: Authenticator; + serviceUrl?: string; + disableSslVerification?: boolean; + agent?: Agent; + } +} + +export = SynthesizeStream; diff --git a/lib/websocket-utils.ts b/lib/websocket-utils.ts new file mode 100644 index 0000000000..afe38930b3 --- /dev/null +++ b/lib/websocket-utils.ts @@ -0,0 +1,75 @@ +/** + * (C) Copyright IBM Corp. 2019, 2020. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +import camelcase = require('camelcase'); + +/** + * To adhere to our Node style guideline, we expose lowerCamelCase parameters to the user. However, the + * service expects different case conventions so we have to serialize the user-provided params. We do this + * by passing in the user params with the allowed params, looking for the camelcase version of each allowed + * param, and creating an object with the correct keys. + * + * @param {object} options - the user-provided options, with lower camel case parameters + * @param {string[]} allowedParams - array of the parameter names that the service allows + * @returns {object} + */ +export function processUserParameters(options: any, allowedParams: string[]): any { + const processedOptions = {}; + + // look for the camelcase version of each parameter - that is what we expose to the user + allowedParams.forEach(param => { + const keyName = camelcase(param); + if (options[keyName] !== undefined) { + processedOptions[param] = options[keyName]; + } else if (options[param] !== undefined) { + // if the user used the service property name, warn them and give them the name to use + console.warn(`Unrecognized parameter: "${param}". Did you mean "${keyName}"?`); + } + }); + + return processedOptions; +} + +/** + * Pulls the transaction ID from the connection headers and returns it in a Promise. + * This function is used by the RecognizeStream and the SynthesizeStream - they both expose + * a method called `getTransactionId` that relies on this code to read the ID from the + * connection. + * + * @param {object} streamContext - the context (i.e. "this") of the invoking stream class + * @returns {Promise} - Resolves with the transaction ID as a string + */ +export function extractTransactionId(streamContext: any) { + return new Promise((resolve, reject) => { + if ( + streamContext.socket && + streamContext.socket._client && + streamContext.socket._client.response && + streamContext.socket._client.response.headers + ) { + resolve( + (streamContext.socket._client.response.headers['x-global-transaction-id'] as string) + ); + } else { + streamContext.on('open', () => + resolve( + (streamContext.socket._client.response.headers['x-global-transaction-id'] as string) + ) + ); + streamContext.on('error', reject); + } + }); +} diff --git a/natural-language-classifier/json-training-to-csv.js b/natural-language-classifier/json-training-to-csv.js deleted file mode 100644 index 1d4fd63c60..0000000000 --- a/natural-language-classifier/json-training-to-csv.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -'use strict'; - -const stringify = require('csv-stringify'); - -/** - * @private - * @param {Object} data - * @return {Array.} - */ -function toCSVArray(data) { - if (data.text && data.classes && data.classes.length > 0) { - return [data.text].concat(data.classes); - } else { - throw Error('Invalid training_data format, it needs to be: ' + '[{ text: "my-text", classes:["my-class1", "my-class2",...]}, {}, ...]'); - } -} - -/** - * IF traning is json, convert it to csv. - * @param {Object[]} jsonData the training_data as a json array - * @param {Function} cb the error first callback - */ -module.exports = function toCSV(training, cb) { - if (Array.isArray(training)) { - try { - stringify(training.map(toCSVArray), cb); - } catch (e) { - cb(e); - } - } else { - cb(null, training); - } -}; diff --git a/natural-language-classifier/v1.js b/natural-language-classifier/v1.js deleted file mode 100755 index d18f369c5a..0000000000 --- a/natural-language-classifier/v1.js +++ /dev/null @@ -1,175 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const pick = require('object.pick'); -const omit = require('object.omit'); -const isStream = require('isstream'); -const toCSV = require('./json-training-to-csv'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {Object} options - * @constructor - */ -function NaturalLanguageClassifierV1(options) { - BaseService.call(this, options); -} -util.inherits(NaturalLanguageClassifierV1, BaseService); -NaturalLanguageClassifierV1.prototype.name = 'natural_language_classifier'; -NaturalLanguageClassifierV1.prototype.version = 'v1'; -NaturalLanguageClassifierV1.URL = 'https://gateway.watsonplatform.net/natural-language-classifier/api'; - -/** - * Creates a classifier - */ -NaturalLanguageClassifierV1.prototype.create = function(params, callback) { - params = params || {}; - - if (!params || !params.training_data) { - callback(new Error('Missing required parameters: training_data')); - return; - } - if (!(Array.isArray(params.training_data) || typeof params.training_data === 'string' || isStream(params.training_data))) { - callback(new Error('training_data needs to be a String, Array or Stream')); - return; - } - - const self = this; - - toCSV(params.training_data, function(err, csv) { - if (err) { - callback(err); - return; - } - - const parameters = { - options: { - url: '/v1/classifiers', - method: 'POST', - json: true, - formData: { - training_data: csv, - training_metadata: JSON.stringify(omit(params, ['training_data'])) - }, - // hack to check required parameters. - // We don't actually need path parameters - path: pick(params, ['language']) - }, - requiredParams: ['language'], - defaultOptions: self._options - }; - return requestFactory(parameters, callback); - }); -}; - -/** - * Returns the classification information for a classifier on a phrase - */ -NaturalLanguageClassifierV1.prototype.classify = function(params, callback) { - params = params || {}; - - // #84: use classifier_id not classifier. - if (!params.classifier_id) { - params.classifier_id = params.classifier; - } - - const parameters = { - options: { - url: '/v1/classifiers/{classifier_id}/classify', - method: 'POST', - json: true, - path: pick(params, ['classifier_id']), - body: pick(params, ['text']) - }, - requiredParams: ['classifier_id', 'text'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Returns the training status of the classifier - */ -NaturalLanguageClassifierV1.prototype.status = function(params, callback) { - params = params || {}; - - // #84: use classifier_id not classifier. - if (!params.classifier_id) { - params.classifier_id = params.classifier; - } - - const parameters = { - options: { - url: '/v1/classifiers/{classifier_id}', - method: 'GET', - json: true, - path: params - }, - requiredParams: ['classifier_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Retrieves the list of classifiers for the user - */ -NaturalLanguageClassifierV1.prototype.list = function(params, callback) { - const parameters = { - options: { - url: '/v1/classifiers', - method: 'GET', - json: true - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Deletes a classifier - */ -NaturalLanguageClassifierV1.prototype.remove = function(params, callback) { - params = params || {}; - - // #84: use classifier_id not classifier. - if (!params.classifier_id) { - params.classifier_id = params.classifier; - } - - const parameters = { - options: { - url: '/v1/classifiers/{classifier_id}', - method: 'DELETE', - path: params, - json: true - }, - requiredParams: ['classifier_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -module.exports = NaturalLanguageClassifierV1; diff --git a/natural-language-understanding/v1.js b/natural-language-understanding/v1.js deleted file mode 100644 index b2430a3891..0000000000 --- a/natural-language-understanding/v1.js +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const util = require('util'); -const BaseService = require('../lib/base_service'); -const extend = require('extend'); - -/** - * NaturalLanguageUnderstanding - * @param {Object} options - * @constructor - */ -function NaturalLanguageUnderstandingV1(options) { - BaseService.call(this, options); - if (typeof this._options.version_date === 'undefined') { - throw new Error('Argument error: version_date was not specified, use NaturalLanguageUnderstandingV1.VERSION_DATE_2017_02_27'); - } - this._options.qs.version = this._options.version_date; -} -util.inherits(NaturalLanguageUnderstandingV1, BaseService); -NaturalLanguageUnderstandingV1.prototype.name = 'natural_language_understanding'; -NaturalLanguageUnderstandingV1.prototype.version = 'v1'; -NaturalLanguageUnderstandingV1.URL = 'https://gateway.watsonplatform.net/natural-language-understanding/api'; -NaturalLanguageUnderstandingV1.VERSION_DATE_2016_01_23 = '2016-01-23'; -// GA version date: 2017-02-27 -// https://www.ibm.com/watson/developercloud/doc/natural-language-understanding/release-notes.html -NaturalLanguageUnderstandingV1.VERSION_DATE_2017_02_27 = '2017-02-27'; - -/** - * Bluemix uses hyphens instead of underscores for NLU in the VCAP_SERVICES env property. - * No idea why. - * - * This method also checks for the underscore'd version just in case they ever change it. - * - * @private - * @override - */ -NaturalLanguageUnderstandingV1.prototype.getCredentialsFromBluemix = function(name) { - return extend( - {}, - BaseService.prototype.getCredentialsFromBluemix.call(this, name), - BaseService.prototype.getCredentialsFromBluemix.call(this, name.replace(/_/g, '-')) - ); -}; - -/** - * Analyze the query. - * @params {object} params for the query - * @param {object} [params.headers] - The headers added - * @param {string} [params.text] - The text to analyze. - * @param {string} [params.html] - The html to analyze. - * @param {string} [params.url] - The url to fetch and analyze. - * @param {object} [params.features] - The features to retrieve (need at least one) - * @param {object} [params.features.categories] - categories feature - * @param {object} [params.features.concepts] - concepts feature - * @param {object} [params.features.emotion] - emotion feature - * @param {object} [params.features.entities] - entities feature - * @param {object} [params.features.keywords] - keywords feature - * @param {object} [params.features.metadata] - metadata feature - * @param {object} [params.features.relations] - relations feature - * @param {object} [params.features.semantic_roles] - semantic roles feature - * @param {object} [params.features.sentiment] - sentiment feature - * @params {function} callback taking (error, jsonResult) - * @example - * ``` - * const options = { - * 'text': 'Natural Language Understanding analyzes unstructured text to return structured insights', - * 'features': { - * 'concepts': { - * 'limit': 3 - * }, - * 'emotion': {}, - * }, - * }; - * nlu.analyze(options, myCallbackFunction); - * ``` - * @return {void} - */ -NaturalLanguageUnderstandingV1.prototype.analyze = function(params, callback) { - const parameters = { - options: { - url: '/v1/analyze', - method: 'POST', - json: true, - body: params - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * List custom models deployed to your service instance. - * @params {object} params for the query - * @param {object} [params.headers] - The headers added - * @params {function} callback taking (error, jsonResult) - * @example - * ``` - * nlu.listModels({}, myCallbackFunction); - * ``` - * @return {void} - */ -NaturalLanguageUnderstandingV1.prototype.listModels = function(params, callback) { - const parameters = { - options: { - url: '/v1/models', - method: 'GET', - json: true - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Delete a custom model that is deployed to your service instance. - * @params {object} params for the query - * @param {object} [params.headers] - The headers added - * @param {string} [params.model_id] - ID of the custom model to delete - * @params {function} callback taking (error, jsonResult) - * @example - * ``` - * const options = { - * 'model_id': 'myModel123' - * }; - * nlu.deleteModel(options, myCallbackFunction); - * ``` - * @return {void} - */ -NaturalLanguageUnderstandingV1.prototype.deleteModel = function(params, callback) { - const parameters = { - options: { - method: 'DELETE', - url: '/v1/models/{model_id}', - path: params, - json: true - }, - requiredParams: ['model_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -module.exports = NaturalLanguageUnderstandingV1; diff --git a/natural-language-understanding/v1.ts b/natural-language-understanding/v1.ts new file mode 100644 index 0000000000..c91f3f1e94 --- /dev/null +++ b/natural-language-understanding/v1.ts @@ -0,0 +1,2118 @@ +/** + * (C) Copyright IBM Corp. 2017, 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * IBM OpenAPI SDK Code Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +import * as extend from 'extend'; +import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http'; +import { + AbortSignal, + Authenticator, + BaseService, + UserOptions, + getAuthenticatorFromEnvironment, + validateParams, +} from 'ibm-cloud-sdk-core'; +import { getSdkHeaders } from '../lib/common'; + +/** + * Analyze various features of text content at scale. Provide text, raw HTML, or a public URL and IBM Watson Natural + * Language Understanding will give you results for the features you request. The service cleans HTML content before + * analysis by default, so the results can ignore most advertisements and other unwanted content. + * + * You can create [custom + * models](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-customizing) + * with Watson Knowledge Studio to detect custom entities and relations in Natural Language Understanding. + * + * API Version: 1.0 + * See: https://cloud.ibm.com/docs/natural-language-understanding + */ + +class NaturalLanguageUnderstandingV1 extends BaseService { + static DEFAULT_SERVICE_URL: string = 'https://api.us-south.natural-language-understanding.watson.cloud.ibm.com'; + + static DEFAULT_SERVICE_NAME: string = 'natural-language-understanding'; + + /** Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is + * `2022-04-07`. + */ + version: string; + + /** + * Construct a NaturalLanguageUnderstandingV1 object. + * + * @param {Object} options - Options for the service. + * @param {string} options.version - Release date of the API version you want to use. Specify dates in YYYY-MM-DD + * format. The current version is `2022-04-07`. + * @param {string} [options.serviceUrl] - The base URL for the service + * @param {OutgoingHttpHeaders} [options.headers] - Default headers that shall be included with every request to the service. + * @param {string} [options.serviceName] - The name of the service to configure + * @param {Authenticator} [options.authenticator] - The Authenticator object used to authenticate requests to the service. Defaults to environment if not set + * @constructor + * @returns {NaturalLanguageUnderstandingV1} + */ + constructor(options: UserOptions) { + options = options || {}; + + const _requiredParams = ['version']; + const _validationErrors = validateParams(options, _requiredParams, null); + if (_validationErrors) { + throw _validationErrors; + } + if (!options.serviceName) { + options.serviceName = NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME; + } + // If the caller didn't supply an authenticator, construct one from external configuration. + if (!options.authenticator) { + options.authenticator = getAuthenticatorFromEnvironment(options.serviceName); + } + super(options); + this.configureService(options.serviceName); + if (options.serviceUrl) { + this.setServiceUrl(options.serviceUrl); + } + this.version = options.version; + } + + /************************* + * analyze + ************************/ + + /** + * Analyze text. + * + * Analyzes text, HTML, or a public webpage for the following features: + * - Categories + * - Classifications + * - Concepts + * - Emotion + * - Entities + * - Keywords + * - Metadata + * - Relations + * - Semantic roles + * - Sentiment + * - Syntax + * + * If a language for the input text is not specified with the `language` parameter, the service [automatically detects + * the + * language](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-detectable-languages). + * + * @param {Object} params - The parameters to send to the service. + * @param {Features} params.features - Specific features to analyze the document for. + * @param {string} [params.text] - The plain text to analyze. One of the `text`, `html`, or `url` parameters is + * required. + * @param {string} [params.html] - The HTML file to analyze. One of the `text`, `html`, or `url` parameters is + * required. + * @param {string} [params.url] - The webpage to analyze. One of the `text`, `html`, or `url` parameters is required. + * @param {boolean} [params.clean] - Set this to `false` to disable webpage cleaning. For more information about + * webpage cleaning, see [Analyzing + * webpages](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-analyzing-webpages). + * @param {string} [params.xpath] - An [XPath + * query](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-analyzing-webpages#xpath) + * to perform on `html` or `url` input. Results of the query will be appended to the cleaned webpage text before it is + * analyzed. To analyze only the results of the XPath query, set the `clean` parameter to `false`. + * @param {boolean} [params.fallbackToRaw] - Whether to use raw HTML content if text cleaning fails. + * @param {boolean} [params.returnAnalyzedText] - Whether or not to return the analyzed text. + * @param {string} [params.language] - ISO 639-1 code that specifies the language of your text. This overrides + * automatic language detection. Language support differs depending on the features you include in your analysis. For + * more information, see [Language + * support](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-language-support). + * @param {number} [params.limitTextCharacters] - Sets the maximum number of characters that are processed by the + * service. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public analyze( + params: NaturalLanguageUnderstandingV1.AnalyzeParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['features']; + const _validParams = ['features', 'text', 'html', 'url', 'clean', 'xpath', 'fallbackToRaw', 'returnAnalyzedText', 'language', 'limitTextCharacters', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const body = { + 'features': _params.features, + 'text': _params.text, + 'html': _params.html, + 'url': _params.url, + 'clean': _params.clean, + 'xpath': _params.xpath, + 'fallback_to_raw': _params.fallbackToRaw, + 'return_analyzed_text': _params.returnAnalyzedText, + 'language': _params.language, + 'limit_text_characters': _params.limitTextCharacters, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'analyze'); + + const parameters = { + options: { + url: '/v1/analyze', + method: 'POST', + body, + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * manageModels + ************************/ + + /** + * List models. + * + * Lists Watson Knowledge Studio [custom entities and relations + * models](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-customizing) + * that are deployed to your Natural Language Understanding service. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listModels( + params?: NaturalLanguageUnderstandingV1.ListModelsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'listModels'); + + const parameters = { + options: { + url: '/v1/models', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete model. + * + * Deletes a custom model. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.modelId - Model ID of the model to delete. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteModel( + params: NaturalLanguageUnderstandingV1.DeleteModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['modelId']; + const _validParams = ['modelId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteModel'); + + const parameters = { + options: { + url: '/v1/models/{model_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * manageCategoriesModels + ************************/ + + /** + * Create categories model. + * + * (Beta) Creates a custom categories model by uploading training data and associated metadata. The model begins the + * training and deploying process and is ready to use when the `status` is `available`. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.language - The 2-letter language code of this model. + * @param {NodeJS.ReadableStream | Buffer} params.trainingData - Training data in JSON format. For more information, + * see [Categories training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-categories##categories-training-data-requirements). + * @param {string} [params.trainingDataContentType] - The content type of trainingData. + * @param {string} [params.name] - An optional name for the model. + * @param {JsonObject} [params.userMetadata] - An optional map of metadata key-value pairs to store with this model. + * @param {string} [params.description] - An optional description of the model. + * @param {string} [params.modelVersion] - An optional version string. + * @param {string} [params.workspaceId] - ID of the Watson Knowledge Studio workspace that deployed this model to + * Natural Language Understanding. + * @param {string} [params.versionDescription] - The description of the version. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createCategoriesModel( + params: NaturalLanguageUnderstandingV1.CreateCategoriesModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['language', 'trainingData']; + const _validParams = ['language', 'trainingData', 'trainingDataContentType', 'name', 'userMetadata', 'description', 'modelVersion', 'workspaceId', 'versionDescription', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'language': _params.language, + 'training_data': { + data: _params.trainingData, + contentType: _params.trainingDataContentType, + }, + 'name': _params.name, + 'user_metadata': _params.userMetadata, + 'description': _params.description, + 'model_version': _params.modelVersion, + 'workspace_id': _params.workspaceId, + 'version_description': _params.versionDescription, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'createCategoriesModel'); + + const parameters = { + options: { + url: '/v1/models/categories', + method: 'POST', + qs: query, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * List categories models. + * + * (Beta) Returns all custom categories models associated with this service instance. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listCategoriesModels( + params?: NaturalLanguageUnderstandingV1.ListCategoriesModelsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'listCategoriesModels'); + + const parameters = { + options: { + url: '/v1/models/categories', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get categories model details. + * + * (Beta) Returns the status of the categories model with the given model ID. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.modelId - ID of the model. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getCategoriesModel( + params: NaturalLanguageUnderstandingV1.GetCategoriesModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['modelId']; + const _validParams = ['modelId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'getCategoriesModel'); + + const parameters = { + options: { + url: '/v1/models/categories/{model_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update categories model. + * + * (Beta) Overwrites the training data associated with this custom categories model and retrains the model. The new + * model replaces the current deployment. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.modelId - ID of the model. + * @param {string} params.language - The 2-letter language code of this model. + * @param {NodeJS.ReadableStream | Buffer} params.trainingData - Training data in JSON format. For more information, + * see [Categories training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-categories##categories-training-data-requirements). + * @param {string} [params.trainingDataContentType] - The content type of trainingData. + * @param {string} [params.name] - An optional name for the model. + * @param {JsonObject} [params.userMetadata] - An optional map of metadata key-value pairs to store with this model. + * @param {string} [params.description] - An optional description of the model. + * @param {string} [params.modelVersion] - An optional version string. + * @param {string} [params.workspaceId] - ID of the Watson Knowledge Studio workspace that deployed this model to + * Natural Language Understanding. + * @param {string} [params.versionDescription] - The description of the version. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateCategoriesModel( + params: NaturalLanguageUnderstandingV1.UpdateCategoriesModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['modelId', 'language', 'trainingData']; + const _validParams = ['modelId', 'language', 'trainingData', 'trainingDataContentType', 'name', 'userMetadata', 'description', 'modelVersion', 'workspaceId', 'versionDescription', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'language': _params.language, + 'training_data': { + data: _params.trainingData, + contentType: _params.trainingDataContentType, + }, + 'name': _params.name, + 'user_metadata': _params.userMetadata, + 'description': _params.description, + 'model_version': _params.modelVersion, + 'workspace_id': _params.workspaceId, + 'version_description': _params.versionDescription, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'updateCategoriesModel'); + + const parameters = { + options: { + url: '/v1/models/categories/{model_id}', + method: 'PUT', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete categories model. + * + * (Beta) Un-deploys the custom categories model with the given model ID and deletes all associated customer data, + * including any training data or binary artifacts. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.modelId - ID of the model. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteCategoriesModel( + params: NaturalLanguageUnderstandingV1.DeleteCategoriesModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['modelId']; + const _validParams = ['modelId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteCategoriesModel'); + + const parameters = { + options: { + url: '/v1/models/categories/{model_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + /************************* + * manageClassificationsModels + ************************/ + + /** + * Create classifications model. + * + * Creates a custom classifications model by uploading training data and associated metadata. The model begins the + * training and deploying process and is ready to use when the `status` is `available`. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.language - The 2-letter language code of this model. + * @param {NodeJS.ReadableStream | Buffer} params.trainingData - Training data in JSON format. For more information, + * see [Classifications training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-classifications#classification-training-data-requirements). + * @param {string} [params.trainingDataContentType] - The content type of trainingData. + * @param {string} [params.name] - An optional name for the model. + * @param {JsonObject} [params.userMetadata] - An optional map of metadata key-value pairs to store with this model. + * @param {string} [params.description] - An optional description of the model. + * @param {string} [params.modelVersion] - An optional version string. + * @param {string} [params.workspaceId] - ID of the Watson Knowledge Studio workspace that deployed this model to + * Natural Language Understanding. + * @param {string} [params.versionDescription] - The description of the version. + * @param {ClassificationsTrainingParameters} [params.trainingParameters] - Optional classifications training + * parameters along with model train requests. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public createClassificationsModel( + params: NaturalLanguageUnderstandingV1.CreateClassificationsModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['language', 'trainingData']; + const _validParams = ['language', 'trainingData', 'trainingDataContentType', 'name', 'userMetadata', 'description', 'modelVersion', 'workspaceId', 'versionDescription', 'trainingParameters', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'language': _params.language, + 'training_data': { + data: _params.trainingData, + contentType: _params.trainingDataContentType, + }, + 'name': _params.name, + 'user_metadata': _params.userMetadata, + 'description': _params.description, + 'model_version': _params.modelVersion, + 'workspace_id': _params.workspaceId, + 'version_description': _params.versionDescription, + 'training_parameters': _params.trainingParameters, + }; + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'createClassificationsModel'); + + const parameters = { + options: { + url: '/v1/models/classifications', + method: 'POST', + qs: query, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * List classifications models. + * + * Returns all custom classifications models associated with this service instance. + * + * @param {Object} [params] - The parameters to send to the service. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public listClassificationsModels( + params?: NaturalLanguageUnderstandingV1.ListClassificationsModelsParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = []; + const _validParams = ['signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'listClassificationsModels'); + + const parameters = { + options: { + url: '/v1/models/classifications', + method: 'GET', + qs: query, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Get classifications model details. + * + * Returns the status of the classifications model with the given model ID. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.modelId - ID of the model. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public getClassificationsModel( + params: NaturalLanguageUnderstandingV1.GetClassificationsModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['modelId']; + const _validParams = ['modelId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'getClassificationsModel'); + + const parameters = { + options: { + url: '/v1/models/classifications/{model_id}', + method: 'GET', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Update classifications model. + * + * Overwrites the training data associated with this custom classifications model and retrains the model. The new + * model replaces the current deployment. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.modelId - ID of the model. + * @param {string} params.language - The 2-letter language code of this model. + * @param {NodeJS.ReadableStream | Buffer} params.trainingData - Training data in JSON format. For more information, + * see [Classifications training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-classifications#classification-training-data-requirements). + * @param {string} [params.trainingDataContentType] - The content type of trainingData. + * @param {string} [params.name] - An optional name for the model. + * @param {JsonObject} [params.userMetadata] - An optional map of metadata key-value pairs to store with this model. + * @param {string} [params.description] - An optional description of the model. + * @param {string} [params.modelVersion] - An optional version string. + * @param {string} [params.workspaceId] - ID of the Watson Knowledge Studio workspace that deployed this model to + * Natural Language Understanding. + * @param {string} [params.versionDescription] - The description of the version. + * @param {ClassificationsTrainingParameters} [params.trainingParameters] - Optional classifications training + * parameters along with model train requests. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public updateClassificationsModel( + params: NaturalLanguageUnderstandingV1.UpdateClassificationsModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['modelId', 'language', 'trainingData']; + const _validParams = ['modelId', 'language', 'trainingData', 'trainingDataContentType', 'name', 'userMetadata', 'description', 'modelVersion', 'workspaceId', 'versionDescription', 'trainingParameters', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const formData = { + 'language': _params.language, + 'training_data': { + data: _params.trainingData, + contentType: _params.trainingDataContentType, + }, + 'name': _params.name, + 'user_metadata': _params.userMetadata, + 'description': _params.description, + 'model_version': _params.modelVersion, + 'workspace_id': _params.workspaceId, + 'version_description': _params.versionDescription, + 'training_parameters': _params.trainingParameters, + }; + + const query = { + 'version': this.version, + }; + + const path = { + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'updateClassificationsModel'); + + const parameters = { + options: { + url: '/v1/models/classifications/{model_id}', + method: 'PUT', + qs: query, + path, + formData, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + 'Content-Type': 'multipart/form-data', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } + + /** + * Delete classifications model. + * + * Un-deploys the custom classifications model with the given model ID and deletes all associated customer data, + * including any training data or binary artifacts. + * + * @param {Object} params - The parameters to send to the service. + * @param {string} params.modelId - ID of the model. + * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers + * @returns {Promise>} + */ + public deleteClassificationsModel( + params: NaturalLanguageUnderstandingV1.DeleteClassificationsModelParams + ): Promise> { + const _params = { ...params }; + const _requiredParams = ['modelId']; + const _validParams = ['modelId', 'signal', 'headers']; + const _validationErrors = validateParams(_params, _requiredParams, _validParams); + if (_validationErrors) { + return Promise.reject(_validationErrors); + } + + const query = { + 'version': this.version, + }; + + const path = { + 'model_id': _params.modelId, + }; + + const sdkHeaders = getSdkHeaders(NaturalLanguageUnderstandingV1.DEFAULT_SERVICE_NAME, 'v1', 'deleteClassificationsModel'); + + const parameters = { + options: { + url: '/v1/models/classifications/{model_id}', + method: 'DELETE', + qs: query, + path, + }, + defaultOptions: extend(true, {}, this.baseOptions, { + headers: extend( + true, + sdkHeaders, + this.baseOptions.headers, + { + 'Accept': 'application/json', + }, + _params.headers + ), + axiosOptions: { + signal: _params.signal, + }, + }), + }; + + return this.createRequest(parameters); + } +} + +/************************* + * interfaces + ************************/ + +namespace NaturalLanguageUnderstandingV1 { + /** Options for the `NaturalLanguageUnderstandingV1` constructor. */ + export interface Options extends UserOptions { + /** Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is + * `2022-04-07`. + */ + version: string; + } + + /** An operation response. */ + export interface Response { + result: T; + status: number; + statusText: string; + headers: IncomingHttpHeaders; + } + + /** The callback for a service request. */ + export type Callback = (error: any, response?: Response) => void; + + /** The body of a service request that returns no response data. */ + export interface EmptyObject {} + + /** A standard JS object, defined to avoid the limitations of `Object` and `object` */ + export interface JsonObject { + [key: string]: any; + } + + /************************* + * request interfaces + ************************/ + + interface DefaultParams { + headers?: OutgoingHttpHeaders; + signal?: AbortSignal; + } + + /** Parameters for the `analyze` operation. */ + export interface AnalyzeParams extends DefaultParams { + /** Specific features to analyze the document for. */ + features: Features; + /** The plain text to analyze. One of the `text`, `html`, or `url` parameters is required. */ + text?: string; + /** The HTML file to analyze. One of the `text`, `html`, or `url` parameters is required. */ + html?: string; + /** The webpage to analyze. One of the `text`, `html`, or `url` parameters is required. */ + url?: string; + /** Set this to `false` to disable webpage cleaning. For more information about webpage cleaning, see [Analyzing + * webpages](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-analyzing-webpages). + */ + clean?: boolean; + /** An [XPath + * query](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-analyzing-webpages#xpath) + * to perform on `html` or `url` input. Results of the query will be appended to the cleaned webpage text before it + * is analyzed. To analyze only the results of the XPath query, set the `clean` parameter to `false`. + */ + xpath?: string; + /** Whether to use raw HTML content if text cleaning fails. */ + fallbackToRaw?: boolean; + /** Whether or not to return the analyzed text. */ + returnAnalyzedText?: boolean; + /** ISO 639-1 code that specifies the language of your text. This overrides automatic language detection. + * Language support differs depending on the features you include in your analysis. For more information, see + * [Language + * support](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-language-support). + */ + language?: string; + /** Sets the maximum number of characters that are processed by the service. */ + limitTextCharacters?: number; + } + + /** Parameters for the `listModels` operation. */ + export interface ListModelsParams extends DefaultParams { + } + + /** Parameters for the `deleteModel` operation. */ + export interface DeleteModelParams extends DefaultParams { + /** Model ID of the model to delete. */ + modelId: string; + } + + /** Parameters for the `createCategoriesModel` operation. */ + export interface CreateCategoriesModelParams extends DefaultParams { + /** The 2-letter language code of this model. */ + language: string; + /** Training data in JSON format. For more information, see [Categories training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-categories##categories-training-data-requirements). + */ + trainingData: NodeJS.ReadableStream | Buffer; + /** The content type of trainingData. */ + trainingDataContentType?: CreateCategoriesModelConstants.TrainingDataContentType | string; + /** An optional name for the model. */ + name?: string; + /** An optional map of metadata key-value pairs to store with this model. */ + userMetadata?: JsonObject; + /** An optional description of the model. */ + description?: string; + /** An optional version string. */ + modelVersion?: string; + /** ID of the Watson Knowledge Studio workspace that deployed this model to Natural Language Understanding. */ + workspaceId?: string; + /** The description of the version. */ + versionDescription?: string; + } + + /** Constants for the `createCategoriesModel` operation. */ + export namespace CreateCategoriesModelConstants { + /** The content type of trainingData. */ + export enum TrainingDataContentType { + JSON = 'json', + APPLICATION_JSON = 'application/json', + } + } + + /** Parameters for the `listCategoriesModels` operation. */ + export interface ListCategoriesModelsParams extends DefaultParams { + } + + /** Parameters for the `getCategoriesModel` operation. */ + export interface GetCategoriesModelParams extends DefaultParams { + /** ID of the model. */ + modelId: string; + } + + /** Parameters for the `updateCategoriesModel` operation. */ + export interface UpdateCategoriesModelParams extends DefaultParams { + /** ID of the model. */ + modelId: string; + /** The 2-letter language code of this model. */ + language: string; + /** Training data in JSON format. For more information, see [Categories training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-categories##categories-training-data-requirements). + */ + trainingData: NodeJS.ReadableStream | Buffer; + /** The content type of trainingData. */ + trainingDataContentType?: UpdateCategoriesModelConstants.TrainingDataContentType | string; + /** An optional name for the model. */ + name?: string; + /** An optional map of metadata key-value pairs to store with this model. */ + userMetadata?: JsonObject; + /** An optional description of the model. */ + description?: string; + /** An optional version string. */ + modelVersion?: string; + /** ID of the Watson Knowledge Studio workspace that deployed this model to Natural Language Understanding. */ + workspaceId?: string; + /** The description of the version. */ + versionDescription?: string; + } + + /** Constants for the `updateCategoriesModel` operation. */ + export namespace UpdateCategoriesModelConstants { + /** The content type of trainingData. */ + export enum TrainingDataContentType { + JSON = 'json', + APPLICATION_JSON = 'application/json', + } + } + + /** Parameters for the `deleteCategoriesModel` operation. */ + export interface DeleteCategoriesModelParams extends DefaultParams { + /** ID of the model. */ + modelId: string; + } + + /** Parameters for the `createClassificationsModel` operation. */ + export interface CreateClassificationsModelParams extends DefaultParams { + /** The 2-letter language code of this model. */ + language: string; + /** Training data in JSON format. For more information, see [Classifications training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-classifications#classification-training-data-requirements). + */ + trainingData: NodeJS.ReadableStream | Buffer; + /** The content type of trainingData. */ + trainingDataContentType?: CreateClassificationsModelConstants.TrainingDataContentType | string; + /** An optional name for the model. */ + name?: string; + /** An optional map of metadata key-value pairs to store with this model. */ + userMetadata?: JsonObject; + /** An optional description of the model. */ + description?: string; + /** An optional version string. */ + modelVersion?: string; + /** ID of the Watson Knowledge Studio workspace that deployed this model to Natural Language Understanding. */ + workspaceId?: string; + /** The description of the version. */ + versionDescription?: string; + /** Optional classifications training parameters along with model train requests. */ + trainingParameters?: ClassificationsTrainingParameters; + } + + /** Constants for the `createClassificationsModel` operation. */ + export namespace CreateClassificationsModelConstants { + /** The content type of trainingData. */ + export enum TrainingDataContentType { + JSON = 'json', + APPLICATION_JSON = 'application/json', + } + } + + /** Parameters for the `listClassificationsModels` operation. */ + export interface ListClassificationsModelsParams extends DefaultParams { + } + + /** Parameters for the `getClassificationsModel` operation. */ + export interface GetClassificationsModelParams extends DefaultParams { + /** ID of the model. */ + modelId: string; + } + + /** Parameters for the `updateClassificationsModel` operation. */ + export interface UpdateClassificationsModelParams extends DefaultParams { + /** ID of the model. */ + modelId: string; + /** The 2-letter language code of this model. */ + language: string; + /** Training data in JSON format. For more information, see [Classifications training data + * requirements](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-classifications#classification-training-data-requirements). + */ + trainingData: NodeJS.ReadableStream | Buffer; + /** The content type of trainingData. */ + trainingDataContentType?: UpdateClassificationsModelConstants.TrainingDataContentType | string; + /** An optional name for the model. */ + name?: string; + /** An optional map of metadata key-value pairs to store with this model. */ + userMetadata?: JsonObject; + /** An optional description of the model. */ + description?: string; + /** An optional version string. */ + modelVersion?: string; + /** ID of the Watson Knowledge Studio workspace that deployed this model to Natural Language Understanding. */ + workspaceId?: string; + /** The description of the version. */ + versionDescription?: string; + /** Optional classifications training parameters along with model train requests. */ + trainingParameters?: ClassificationsTrainingParameters; + } + + /** Constants for the `updateClassificationsModel` operation. */ + export namespace UpdateClassificationsModelConstants { + /** The content type of trainingData. */ + export enum TrainingDataContentType { + JSON = 'json', + APPLICATION_JSON = 'application/json', + } + } + + /** Parameters for the `deleteClassificationsModel` operation. */ + export interface DeleteClassificationsModelParams extends DefaultParams { + /** ID of the model. */ + modelId: string; + } + + /************************* + * model interfaces + ************************/ + + /** + * Results of the analysis, organized by feature. + */ + export interface AnalysisResults { + /** Language used to analyze the text. */ + language?: string; + /** Text that was used in the analysis. */ + analyzed_text?: string; + /** URL of the webpage that was analyzed. */ + retrieved_url?: string; + /** API usage information for the request. */ + usage?: AnalysisResultsUsage; + /** The general concepts referenced or alluded to in the analyzed text. */ + concepts?: ConceptsResult[]; + /** The entities detected in the analyzed text. */ + entities?: EntitiesResult[]; + /** The keywords from the analyzed text. */ + keywords?: KeywordsResult[]; + /** The categories that the service assigned to the analyzed text. */ + categories?: CategoriesResult[]; + /** The classifications assigned to the analyzed text. */ + classifications?: ClassificationsResult[]; + /** The anger, disgust, fear, joy, or sadness conveyed by the content. */ + emotion?: EmotionResult; + /** Webpage metadata, such as the author and the title of the page. */ + metadata?: FeaturesResultsMetadata; + /** The relationships between entities in the content. */ + relations?: RelationsResult[]; + /** Sentences parsed into `subject`, `action`, and `object` form. */ + semantic_roles?: SemanticRolesResult[]; + /** The sentiment of the content. */ + sentiment?: SentimentResult; + /** Tokens and sentences returned from syntax analysis. */ + syntax?: SyntaxResult; + } + + /** + * API usage information for the request. + */ + export interface AnalysisResultsUsage { + /** Number of features used in the API call. */ + features?: number; + /** Number of text characters processed. */ + text_characters?: number; + /** Number of 10,000-character units processed. */ + text_units?: number; + } + + /** + * The author of the analyzed content. + */ + export interface Author { + /** Name of the author. */ + name?: string; + } + + /** + * Categories model. + */ + export interface CategoriesModel { + /** An optional name for the model. */ + name?: string; + /** An optional map of metadata key-value pairs to store with this model. */ + user_metadata?: JsonObject; + /** The 2-letter language code of this model. */ + language: string; + /** An optional description of the model. */ + description?: string; + /** An optional version string. */ + model_version?: string; + /** ID of the Watson Knowledge Studio workspace that deployed this model to Natural Language Understanding. */ + workspace_id?: string; + /** The description of the version. */ + version_description?: string; + /** The service features that are supported by the custom model. */ + features?: string[]; + /** When the status is `available`, the model is ready to use. */ + status: CategoriesModel.Constants.Status | string; + /** Unique model ID. */ + model_id: string; + /** dateTime indicating when the model was created. */ + created: string; + notices?: Notice[]; + /** dateTime of last successful model training. */ + last_trained?: string; + /** dateTime of last successful model deployment. */ + last_deployed?: string; + } + export namespace CategoriesModel { + export namespace Constants { + /** When the status is `available`, the model is ready to use. */ + export enum Status { + STARTING = 'starting', + TRAINING = 'training', + DEPLOYING = 'deploying', + AVAILABLE = 'available', + ERROR = 'error', + DELETED = 'deleted', + } + } + } + + /** + * List of categories models. + */ + export interface CategoriesModelList { + /** The categories models. */ + models?: CategoriesModel[]; + } + + /** + * Returns a hierarchical taxonomy of the content. The top three categories are returned by default. + * + * Supported languages: Arabic, English, French, German, Italian, Japanese, Korean, Portuguese, Spanish. + */ + export interface CategoriesOptions { + /** Set this to `true` to return explanations for each categorization. **This is available only for English + * categories.**. + */ + explanation?: boolean; + /** Maximum number of categories to return. */ + limit?: number; + /** (Beta) Enter a [custom + * model](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-customizing) + * ID to override the standard categories model. **This is available only for English categories.**. + */ + model?: string; + } + + /** + * Relevant text that contributed to the categorization. + */ + export interface CategoriesRelevantText { + /** Text from the analyzed source that supports the categorization. */ + text?: string; + } + + /** + * A categorization of the analyzed text. + */ + export interface CategoriesResult { + /** The path to the category through the multi-level taxonomy hierarchy. For more information about the + * categories, see [Categories + * hierarchy](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-categories#categories-hierarchy). + */ + label?: string; + /** Confidence score for the category classification. Higher values indicate greater confidence. */ + score?: number; + /** Information that helps to explain what contributed to the categories result. */ + explanation?: CategoriesResultExplanation; + } + + /** + * Information that helps to explain what contributed to the categories result. + */ + export interface CategoriesResultExplanation { + /** An array of relevant text from the source that contributed to the categorization. The sorted array begins + * with the phrase that contributed most significantly to the result, followed by phrases that were less and less + * impactful. + */ + relevant_text?: CategoriesRelevantText[]; + } + + /** + * Classifications model. + */ + export interface ClassificationsModel { + /** An optional name for the model. */ + name?: string; + /** An optional map of metadata key-value pairs to store with this model. */ + user_metadata?: JsonObject; + /** The 2-letter language code of this model. */ + language: string; + /** An optional description of the model. */ + description?: string; + /** An optional version string. */ + model_version?: string; + /** ID of the Watson Knowledge Studio workspace that deployed this model to Natural Language Understanding. */ + workspace_id?: string; + /** The description of the version. */ + version_description?: string; + /** The service features that are supported by the custom model. */ + features?: string[]; + /** When the status is `available`, the model is ready to use. */ + status: ClassificationsModel.Constants.Status | string; + /** Unique model ID. */ + model_id: string; + /** dateTime indicating when the model was created. */ + created: string; + notices?: Notice[]; + /** dateTime of last successful model training. */ + last_trained?: string; + /** dateTime of last successful model deployment. */ + last_deployed?: string; + } + export namespace ClassificationsModel { + export namespace Constants { + /** When the status is `available`, the model is ready to use. */ + export enum Status { + STARTING = 'starting', + TRAINING = 'training', + DEPLOYING = 'deploying', + AVAILABLE = 'available', + ERROR = 'error', + DELETED = 'deleted', + } + } + } + + /** + * List of classifications models. + */ + export interface ClassificationsModelList { + /** The classifications models. */ + models?: ClassificationsModel[]; + } + + /** + * Returns text classifications for the content. + */ + export interface ClassificationsOptions { + /** Enter a [custom + * model](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-customizing) + * ID of the classifications model to be used. + * + * You can analyze tone by using a language-specific model ID. See [Tone analytics + * (Classifications)](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-tone_analytics) + * for more information. + */ + model?: string; + } + + /** + * A classification of the analyzed text. + */ + export interface ClassificationsResult { + /** Classification assigned to the text. */ + class_name?: string; + /** Confidence score for the classification. Higher values indicate greater confidence. */ + confidence?: number; + } + + /** + * Optional classifications training parameters along with model train requests. + */ + export interface ClassificationsTrainingParameters { + /** Model type selector to train either a single_label or a multi_label classifier. */ + model_type?: ClassificationsTrainingParameters.Constants.ModelType | string; + } + export namespace ClassificationsTrainingParameters { + export namespace Constants { + /** Model type selector to train either a single_label or a multi_label classifier. */ + export enum ModelType { + SINGLE_LABEL = 'single_label', + MULTI_LABEL = 'multi_label', + } + } + } + + /** + * Returns high-level concepts in the content. For example, a research paper about deep learning might return the + * concept, "Artificial Intelligence" although the term is not mentioned. + * + * Supported languages: English, French, German, Italian, Japanese, Korean, Portuguese, Spanish. + */ + export interface ConceptsOptions { + /** Maximum number of concepts to return. */ + limit?: number; + } + + /** + * The general concepts referenced or alluded to in the analyzed text. + */ + export interface ConceptsResult { + /** Name of the concept. */ + text?: string; + /** Relevance score between 0 and 1. Higher scores indicate greater relevance. */ + relevance?: number; + /** Link to the corresponding DBpedia resource. */ + dbpedia_resource?: string; + } + + /** + * Delete model results. + */ + export interface DeleteModelResults { + /** model_id of the deleted model. */ + deleted?: string; + } + + /** + * Disambiguation information for the entity. + */ + export interface DisambiguationResult { + /** Common entity name. */ + name?: string; + /** Link to the corresponding DBpedia resource. */ + dbpedia_resource?: string; + /** Entity subtype information. */ + subtype?: string[]; + } + + /** + * Emotion results for the document as a whole. + */ + export interface DocumentEmotionResults { + /** Emotion results for the document as a whole. */ + emotion?: EmotionScores; + } + + /** + * DocumentSentimentResults. + */ + export interface DocumentSentimentResults { + /** Indicates whether the sentiment is positive, neutral, or negative. */ + label?: string; + /** Sentiment score from -1 (negative) to 1 (positive). */ + score?: number; + } + + /** + * Detects anger, disgust, fear, joy, or sadness that is conveyed in the content or by the context around target + * phrases specified in the targets parameter. You can analyze emotion for detected entities with `entities.emotion` + * and for keywords with `keywords.emotion`. + * + * Supported languages: English. + */ + export interface EmotionOptions { + /** Set this to `false` to hide document-level emotion results. */ + document?: boolean; + /** Emotion results will be returned for each target string that is found in the document. */ + targets?: string[]; + } + + /** + * The detected anger, disgust, fear, joy, or sadness that is conveyed by the content. Emotion information can be + * returned for detected entities, keywords, or user-specified target phrases found in the text. + */ + export interface EmotionResult { + /** Emotion results for the document as a whole. */ + document?: DocumentEmotionResults; + /** Emotion results for specified targets. */ + targets?: TargetedEmotionResults[]; + } + + /** + * EmotionScores. + */ + export interface EmotionScores { + /** Anger score from 0 to 1. A higher score means that the text is more likely to convey anger. */ + anger?: number; + /** Disgust score from 0 to 1. A higher score means that the text is more likely to convey disgust. */ + disgust?: number; + /** Fear score from 0 to 1. A higher score means that the text is more likely to convey fear. */ + fear?: number; + /** Joy score from 0 to 1. A higher score means that the text is more likely to convey joy. */ + joy?: number; + /** Sadness score from 0 to 1. A higher score means that the text is more likely to convey sadness. */ + sadness?: number; + } + + /** + * Identifies people, cities, organizations, and other entities in the content. For more information, see [Entity + * types and + * subtypes](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-entity-type-systems). + * + * Supported languages: English, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish, Swedish. + * Arabic, Chinese, and Dutch are supported only through custom models. + */ + export interface EntitiesOptions { + /** Maximum number of entities to return. */ + limit?: number; + /** Set this to `true` to return locations of entity mentions. */ + mentions?: boolean; + /** Enter a [custom + * model](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-customizing) + * ID to override the standard entity detection model. + */ + model?: string; + /** Set this to `true` to return sentiment information for detected entities. */ + sentiment?: boolean; + /** Set this to `true` to analyze emotion for detected keywords. */ + emotion?: boolean; + } + + /** + * The important people, places, geopolitical entities and other types of entities in your content. + */ + export interface EntitiesResult { + /** Entity type. */ + type?: string; + /** The name of the entity. */ + text?: string; + /** Relevance score from 0 to 1. Higher values indicate greater relevance. */ + relevance?: number; + /** Confidence in the entity identification from 0 to 1. Higher values indicate higher confidence. In standard + * entities requests, confidence is returned only for English text. All entities requests that use custom models + * return the confidence score. + */ + confidence?: number; + /** Entity mentions and locations. */ + mentions?: EntityMention[]; + /** How many times the entity was mentioned in the text. */ + count?: number; + /** Emotion analysis results for the entity, enabled with the `emotion` option. */ + emotion?: EmotionScores; + /** Sentiment analysis results for the entity, enabled with the `sentiment` option. */ + sentiment?: FeatureSentimentResults; + /** Disambiguation information for the entity. */ + disambiguation?: DisambiguationResult; + } + + /** + * EntityMention. + */ + export interface EntityMention { + /** Entity mention text. */ + text?: string; + /** Character offsets indicating the beginning and end of the mention in the analyzed text. */ + location?: number[]; + /** Confidence in the entity identification from 0 to 1. Higher values indicate higher confidence. In standard + * entities requests, confidence is returned only for English text. All entities requests that use custom models + * return the confidence score. + */ + confidence?: number; + } + + /** + * FeatureSentimentResults. + */ + export interface FeatureSentimentResults { + /** Sentiment score from -1 (negative) to 1 (positive). */ + score?: number; + } + + /** + * Analysis features and options. + */ + export interface Features { + /** Returns text classifications for the content. */ + classifications?: ClassificationsOptions; + /** Returns high-level concepts in the content. For example, a research paper about deep learning might return + * the concept, "Artificial Intelligence" although the term is not mentioned. + * + * Supported languages: English, French, German, Italian, Japanese, Korean, Portuguese, Spanish. + */ + concepts?: ConceptsOptions; + /** Detects anger, disgust, fear, joy, or sadness that is conveyed in the content or by the context around + * target phrases specified in the targets parameter. You can analyze emotion for detected entities with + * `entities.emotion` and for keywords with `keywords.emotion`. + * + * Supported languages: English. + */ + emotion?: EmotionOptions; + /** Identifies people, cities, organizations, and other entities in the content. For more information, see + * [Entity types and + * subtypes](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-entity-type-systems). + * + * Supported languages: English, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish, Swedish. + * Arabic, Chinese, and Dutch are supported only through custom models. + */ + entities?: EntitiesOptions; + /** Returns important keywords in the content. + * + * Supported languages: English, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish, Swedish. + */ + keywords?: KeywordsOptions; + /** Returns information from the document, including author name, title, RSS/ATOM feeds, prominent page image, + * and publication date. Supports URL and HTML input types only. + */ + metadata?: JsonObject; + /** Recognizes when two entities are related and identifies the type of relation. For example, an `awardedTo` + * relation might connect the entities "Nobel Prize" and "Albert Einstein". For more information, see [Relation + * types](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-relations). + * + * Supported languages: Arabic, English, German, Japanese, Korean, Spanish. Chinese, Dutch, French, Italian, and + * Portuguese custom models are also supported. + */ + relations?: RelationsOptions; + /** Parses sentences into subject, action, and object form. + * + * Supported languages: English, German, Japanese, Korean, Spanish. + */ + semantic_roles?: SemanticRolesOptions; + /** Analyzes the general sentiment of your content or the sentiment toward specific target phrases. You can + * analyze sentiment for detected entities with `entities.sentiment` and for keywords with `keywords.sentiment`. + * + * Supported languages: Arabic, English, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish. + */ + sentiment?: SentimentOptions; + /** Returns a hierarchical taxonomy of the content. The top three categories are returned by default. + * + * Supported languages: Arabic, English, French, German, Italian, Japanese, Korean, Portuguese, Spanish. + */ + categories?: CategoriesOptions; + /** Returns tokens and sentences from the input text. */ + syntax?: SyntaxOptions; + } + + /** + * Webpage metadata, such as the author and the title of the page. + */ + export interface FeaturesResultsMetadata { + /** The authors of the document. */ + authors?: Author[]; + /** The publication date in the format ISO 8601. */ + publication_date?: string; + /** The title of the document. */ + title?: string; + /** URL of a prominent image on the webpage. */ + image?: string; + /** RSS/ATOM feeds found on the webpage. */ + feeds?: Feed[]; + } + + /** + * RSS or ATOM feed found on the webpage. + */ + export interface Feed { + /** URL of the RSS or ATOM feed. */ + link?: string; + } + + /** + * Returns important keywords in the content. + * + * Supported languages: English, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish, Swedish. + */ + export interface KeywordsOptions { + /** Maximum number of keywords to return. */ + limit?: number; + /** Set this to `true` to return sentiment information for detected keywords. */ + sentiment?: boolean; + /** Set this to `true` to analyze emotion for detected keywords. */ + emotion?: boolean; + } + + /** + * The important keywords in the content, organized by relevance. + */ + export interface KeywordsResult { + /** Number of times the keyword appears in the analyzed text. */ + count?: number; + /** Relevance score from 0 to 1. Higher values indicate greater relevance. */ + relevance?: number; + /** The keyword text. */ + text?: string; + /** Emotion analysis results for the keyword, enabled with the `emotion` option. */ + emotion?: EmotionScores; + /** Sentiment analysis results for the keyword, enabled with the `sentiment` option. */ + sentiment?: FeatureSentimentResults; + } + + /** + * Custom models that are available for entities and relations. + */ + export interface ListModelsResults { + /** An array of available models. */ + models?: Model[]; + } + + /** + * Model. + */ + export interface Model { + /** When the status is `available`, the model is ready to use. */ + status?: Model.Constants.Status | string; + /** Unique model ID. */ + model_id?: string; + /** ISO 639-1 code that indicates the language of the model. */ + language?: string; + /** Model description. */ + description?: string; + /** ID of the Watson Knowledge Studio workspace that deployed this model to Natural Language Understanding. */ + workspace_id?: string; + /** The model version, if it was manually provided in Watson Knowledge Studio. */ + model_version?: string; + /** Deprecated: Deprecated — use `model_version`. */ + version?: string; + /** The description of the version, if it was manually provided in Watson Knowledge Studio. */ + version_description?: string; + /** A dateTime indicating when the model was created. */ + created?: string; + } + export namespace Model { + export namespace Constants { + /** When the status is `available`, the model is ready to use. */ + export enum Status { + STARTING = 'starting', + TRAINING = 'training', + DEPLOYING = 'deploying', + AVAILABLE = 'available', + ERROR = 'error', + DELETED = 'deleted', + } + } + } + + /** + * A list of messages describing model training issues when model status is `error`. + */ + export interface Notice { + /** Describes deficiencies or inconsistencies in training data. */ + message?: string; + } + + /** + * RelationArgument. + */ + export interface RelationArgument { + /** An array of extracted entities. */ + entities?: RelationEntity[]; + /** Character offsets indicating the beginning and end of the mention in the analyzed text. */ + location?: number[]; + /** Text that corresponds to the argument. */ + text?: string; + } + + /** + * An entity that corresponds with an argument in a relation. + */ + export interface RelationEntity { + /** Text that corresponds to the entity. */ + text?: string; + /** Entity type. */ + type?: string; + } + + /** + * Recognizes when two entities are related and identifies the type of relation. For example, an `awardedTo` relation + * might connect the entities "Nobel Prize" and "Albert Einstein". For more information, see [Relation + * types](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-relations). + * + * Supported languages: Arabic, English, German, Japanese, Korean, Spanish. Chinese, Dutch, French, Italian, and + * Portuguese custom models are also supported. + */ + export interface RelationsOptions { + /** Enter a [custom + * model](https://cloud.ibm.com/docs/natural-language-understanding?topic=natural-language-understanding-customizing) + * ID to override the default model. + */ + model?: string; + } + + /** + * The relations between entities found in the content. + */ + export interface RelationsResult { + /** Confidence score for the relation. Higher values indicate greater confidence. */ + score?: number; + /** The sentence that contains the relation. */ + sentence?: string; + /** The type of the relation. */ + type?: string; + /** Entity mentions that are involved in the relation. */ + arguments?: RelationArgument[]; + } + + /** + * SemanticRolesEntity. + */ + export interface SemanticRolesEntity { + /** Entity type. */ + type?: string; + /** The entity text. */ + text?: string; + } + + /** + * SemanticRolesKeyword. + */ + export interface SemanticRolesKeyword { + /** The keyword text. */ + text?: string; + } + + /** + * Parses sentences into subject, action, and object form. + * + * Supported languages: English, German, Japanese, Korean, Spanish. + */ + export interface SemanticRolesOptions { + /** Maximum number of semantic_roles results to return. */ + limit?: number; + /** Set this to `true` to return keyword information for subjects and objects. */ + keywords?: boolean; + /** Set this to `true` to return entity information for subjects and objects. */ + entities?: boolean; + } + + /** + * The object containing the actions and the objects the actions act upon. + */ + export interface SemanticRolesResult { + /** Sentence from the source that contains the subject, action, and object. */ + sentence?: string; + /** The extracted subject from the sentence. */ + subject?: SemanticRolesResultSubject; + /** The extracted action from the sentence. */ + action?: SemanticRolesResultAction; + /** The extracted object from the sentence. */ + object?: SemanticRolesResultObject; + } + + /** + * The extracted action from the sentence. + */ + export interface SemanticRolesResultAction { + /** Analyzed text that corresponds to the action. */ + text?: string; + /** normalized version of the action. */ + normalized?: string; + verb?: SemanticRolesVerb; + } + + /** + * The extracted object from the sentence. + */ + export interface SemanticRolesResultObject { + /** Object text. */ + text?: string; + /** An array of extracted keywords. */ + keywords?: SemanticRolesKeyword[]; + } + + /** + * The extracted subject from the sentence. + */ + export interface SemanticRolesResultSubject { + /** Text that corresponds to the subject role. */ + text?: string; + /** An array of extracted entities. */ + entities?: SemanticRolesEntity[]; + /** An array of extracted keywords. */ + keywords?: SemanticRolesKeyword[]; + } + + /** + * SemanticRolesVerb. + */ + export interface SemanticRolesVerb { + /** The keyword text. */ + text?: string; + /** Verb tense. */ + tense?: string; + } + + /** + * SentenceResult. + */ + export interface SentenceResult { + /** The sentence. */ + text?: string; + /** Character offsets indicating the beginning and end of the sentence in the analyzed text. */ + location?: number[]; + } + + /** + * Analyzes the general sentiment of your content or the sentiment toward specific target phrases. You can analyze + * sentiment for detected entities with `entities.sentiment` and for keywords with `keywords.sentiment`. + * + * Supported languages: Arabic, English, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish. + */ + export interface SentimentOptions { + /** Set this to `false` to hide document-level sentiment results. */ + document?: boolean; + /** Sentiment results will be returned for each target string that is found in the document. */ + targets?: string[]; + } + + /** + * The sentiment of the content. + */ + export interface SentimentResult { + /** The document level sentiment. */ + document?: DocumentSentimentResults; + /** The targeted sentiment to analyze. */ + targets?: TargetedSentimentResults[]; + } + + /** + * Returns tokens and sentences from the input text. + */ + export interface SyntaxOptions { + /** Tokenization options. */ + tokens?: SyntaxOptionsTokens; + /** Set this to `true` to return sentence information. */ + sentences?: boolean; + } + + /** + * Tokenization options. + */ + export interface SyntaxOptionsTokens { + /** Set this to `true` to return the lemma for each token. */ + lemma?: boolean; + /** Set this to `true` to return the part of speech for each token. */ + part_of_speech?: boolean; + } + + /** + * Tokens and sentences returned from syntax analysis. + */ + export interface SyntaxResult { + tokens?: TokenResult[]; + sentences?: SentenceResult[]; + } + + /** + * Emotion results for a specified target. + */ + export interface TargetedEmotionResults { + /** Targeted text. */ + text?: string; + /** The emotion results for the target. */ + emotion?: EmotionScores; + } + + /** + * TargetedSentimentResults. + */ + export interface TargetedSentimentResults { + /** Targeted text. */ + text?: string; + /** Sentiment score from -1 (negative) to 1 (positive). */ + score?: number; + } + + /** + * TokenResult. + */ + export interface TokenResult { + /** The token as it appears in the analyzed text. */ + text?: string; + /** The part of speech of the token. For more information about the values, see [Universal Dependencies POS + * tags](https://universaldependencies.org/u/pos/). + */ + part_of_speech?: TokenResult.Constants.PartOfSpeech | string; + /** Character offsets indicating the beginning and end of the token in the analyzed text. */ + location?: number[]; + /** The [lemma](https://wikipedia.org/wiki/Lemma_%28morphology%29) of the token. */ + lemma?: string; + } + export namespace TokenResult { + export namespace Constants { + /** The part of speech of the token. For more information about the values, see [Universal Dependencies POS tags](https://universaldependencies.org/u/pos/). */ + export enum PartOfSpeech { + ADJ = 'ADJ', + ADP = 'ADP', + ADV = 'ADV', + AUX = 'AUX', + CCONJ = 'CCONJ', + DET = 'DET', + INTJ = 'INTJ', + NOUN = 'NOUN', + NUM = 'NUM', + PART = 'PART', + PRON = 'PRON', + PROPN = 'PROPN', + PUNCT = 'PUNCT', + SCONJ = 'SCONJ', + SYM = 'SYM', + VERB = 'VERB', + X = 'X', + } + } + } +} + +export = NaturalLanguageUnderstandingV1; diff --git a/package-lock.json b/package-lock.json index b9b6d66c89..03676319fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6793 +1,15438 @@ { - "name": "watson-developer-cloud", - "version": "2.39.2", - "lockfileVersion": 1, + "name": "ibm-watson", + "version": "12.2.0", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "JSONStream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.0.7.tgz", - "integrity": "sha1-cAyORxH+8c5CH2UL6tVSNbsh194=", - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "packages": { + "": { + "name": "ibm-watson", + "version": "12.2.0", + "license": "Apache-2.0", + "dependencies": { + "@types/async": "^3.2.5", + "@types/extend": "^3.0.1", + "@types/isstream": "^0.1.0", + "@types/node": "^13.13.39", + "@types/websocket": "^1.0.1", + "async": "^3.2.0", + "camelcase": "^6.2.0", + "extend": "~3.0.2", + "ibm-cloud-sdk-core": "^5.4.0", + "isstream": "~0.1.2", + "websocket": "^1.0.33" + }, + "devDependencies": { + "@ibm-cloud/sdk-test-utilities": "^1.0.0", + "@semantic-release/changelog": "^5.0.1", + "@semantic-release/git": "^9.0.0", + "axios": "^1.7.7", + "codecov": "^3.8.1", + "concat-stream": "^2.0.0", + "cz-conventional-changelog": "^3.3.0", + "eslint": "^6.8.0", + "eslint-config-google": "^0.14.0", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.3.1", + "installed-check": "^3.0.0", + "jest": "^29.7.0", + "jsdoc": "^3.6.6", + "lint-staged": "^10.5.3", + "prettier": "^2.2.1", + "semantic-release": "^17.3.1", + "snyk": "^1.437.3", + "tsc-publish": "^0.5.1", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typedoc": "^0.17.8", + "typescript": "^4.9.4", + "wav": "~1.0.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, - "requires": { - "mime-types": "2.1.15", - "negotiator": "0.6.1" + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "node_modules/@babel/compat-data": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", "dev": true, - "requires": { - "acorn": "4.0.13" + "engines": { + "node": ">=6.9.0" } }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, - "requires": { - "acorn": "3.3.0" - }, "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" } }, - "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" + "engines": { + "node": ">=6.9.0" } }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, - "requires": { - "sprintf-js": "1.0.3" + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, - "requires": { - "arr-flatten": "1.0.3" + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "arr-flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", - "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", - "dev": true - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, - "requires": { - "array-uniq": "1.0.3" + "engines": { + "node": ">=6.9.0" } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" - }, - "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, - "requires": { - "bn.js": "4.11.7", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "engines": { + "node": ">=6.9.0" } }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, - "requires": { - "util": "0.10.3" + "engines": { + "node": ">=6.9.0" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, - "astw": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", - "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, - "requires": { - "acorn": "4.0.13" + "engines": { + "node": ">=6.9.0" } }, - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "requires": { - "lodash": "4.17.4" + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "babylon": { - "version": "7.0.0-beta.19", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", - "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, - "requires": { - "tweetnacl": "0.14.5" + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "requires": { - "callsite": "1.0.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "bignumber.js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-1.1.1.tgz", - "integrity": "sha1-GkFdmsAUwTJWrx/u2dGj5XF6jPc=" - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", - "dev": true - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" - }, - "bn.js": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", - "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==", - "dev": true - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.1", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.2.0" + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-pack": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", - "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "requires": { - "JSONStream": "1.0.7", - "combine-source-map": "0.7.2", - "defined": "1.0.0", - "through2": "2.0.3", - "umd": "3.0.1" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, - "requires": { - "resolve": "1.1.7" - }, "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "browserify": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.4.0.tgz", - "integrity": "sha1-CJo0Y69Y0OSNjNQHCz90ZU1avKk=", - "dev": true, - "requires": { - "JSONStream": "1.0.7", - "assert": "1.4.1", - "browser-pack": "6.0.2", - "browser-resolve": "1.11.2", - "browserify-zlib": "0.1.4", - "buffer": "5.0.6", - "cached-path-relative": "1.0.1", - "concat-stream": "1.5.2", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.0", - "defined": "1.0.0", - "deps-sort": "2.0.0", - "domain-browser": "1.1.7", - "duplexer2": "0.1.4", - "events": "1.1.1", - "glob": "7.1.2", - "has": "1.0.1", - "htmlescape": "1.1.1", - "https-browserify": "1.0.0", - "inherits": "2.0.3", - "insert-module-globals": "7.0.1", - "labeled-stream-splicer": "2.0.0", - "module-deps": "4.1.1", - "os-browserify": "0.1.2", - "parents": "1.0.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "read-only-stream": "2.0.0", - "readable-stream": "2.3.3", - "resolve": "1.3.3", - "shasum": "1.0.2", - "shell-quote": "1.6.1", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "1.0.3", - "subarg": "1.0.0", - "syntax-error": "1.3.0", - "through2": "2.0.3", - "timers-browserify": "1.4.2", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4", - "xtend": "4.0.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - } + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.3", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "inherits": "2.0.3" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "requires": { - "browserify-aes": "1.0.6", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "requires": { - "cipher-base": "1.0.3", - "des.js": "1.0.0", - "inherits": "2.0.3" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "requires": { - "bn.js": "4.11.7", - "randombytes": "2.0.5" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "requires": { - "bn.js": "4.11.7", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "requires": { - "pako": "0.2.9" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "buffer": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.6.tgz", - "integrity": "sha1-LqZp9+7Atu2gWwj4tf9mGyhXNYg=", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "buffer-from": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.1.tgz", - "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", - "requires": { - "is-array-buffer-x": "1.2.1" + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cached-path-relative": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", - "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", - "dev": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, - "requires": { - "callsites": "0.2.0" + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true + "node_modules/@babel/traverse": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "dev": true, - "requires": { - "no-case": "2.3.1", - "upper-case": "1.1.3" + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, - "requires": { - "underscore-contrib": "0.3.0" + "optional": true, + "engines": { + "node": ">=0.1.90" } }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "node_modules/@commitlint/config-validator": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.0.0.tgz", + "integrity": "sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==", "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "optional": true, + "dependencies": { + "@commitlint/types": "^20.0.0", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" } }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "node_modules/@commitlint/execute-rule": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", + "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", "dev": true, - "requires": { - "assertion-error": "1.0.2", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" + "optional": true, + "engines": { + "node": ">=v18" } }, - "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "node_modules/@commitlint/load": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.1.0.tgz", + "integrity": "sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/config-validator": "^20.0.0", + "@commitlint/execute-rule": "^20.0.0", + "@commitlint/resolve-extends": "^20.1.0", + "@commitlint/types": "^20.0.0", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" } }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "cipher-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", - "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "requires": { - "inherits": "2.0.3" + "optional": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", + "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", "dev": true, - "requires": { - "restore-cursor": "2.0.0" + "optional": true, + "dependencies": { + "jiti": "^2.4.1" + }, + "engines": { + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "node_modules/@commitlint/load/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - } + "engines": { + "node": ">=14.17" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "node_modules/@commitlint/resolve-extends": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.1.0.tgz", + "integrity": "sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==", "dev": true, - "requires": { - "color-name": "1.1.3" + "optional": true, + "dependencies": { + "@commitlint/config-validator": "^20.0.0", + "@commitlint/types": "^20.0.0", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", "dev": true, - "requires": { - "lodash": "4.17.4" + "optional": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" } }, - "combine-source-map": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", - "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "requires": { - "convert-source-map": "1.1.3", - "inline-source-map": "0.6.2", - "lodash.memoize": "3.0.4", - "source-map": "0.5.6" + "optional": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "requires": { - "delayed-stream": "1.0.0" + "node_modules/@ibm-cloud/sdk-test-utilities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ibm-cloud/sdk-test-utilities/-/sdk-test-utilities-1.0.0.tgz", + "integrity": "sha512-/WxEqZvjIEucasGqrY70kHBbqV7O47Ygnf+XoGxPy/H/NqS6xBMZblkVq0vsmQM73a+vbA9oKhn+4uM09bKlxA==", + "dev": true, + "dependencies": { + "expect": "^29.7.0" + }, + "engines": { + "node": ">=18" } }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "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, - "requires": { - "graceful-readlink": "1.0.1" + "dependencies": { + "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" } }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "node_modules/@istanbuljs/load-nyc-config/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, + "engines": { + "node": ">=6" + } }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "engines": { + "node": ">=8" } }, - "connect": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", - "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.0.6", - "parseurl": "1.3.2", - "utils-merge": "1.0.1" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "node_modules/@jest/console/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, - "requires": { - "date-now": "0.1.4" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", - "dev": true + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "node_modules/@jest/console/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" + } }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "node_modules/@jest/console/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 }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-ecdh": { + "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "bn.js": "4.11.7", - "elliptic": "6.4.0" + "engines": { + "node": ">=8" } }, - "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "cipher-base": "1.0.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.8" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, - "requires": { - "cipher-base": "1.0.3", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "node_modules/@jest/core/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, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.2.14" + "engines": { + "node": ">=8" } }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.2.0" - } - } + "node_modules/@jest/core/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" } }, - "crypto-browserify": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", - "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.12", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "csv-stringify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-1.0.4.tgz", - "integrity": "sha1-vBi6ua1M7zGV/SV5gLWLR5xC0+U=", - "requires": { - "lodash.get": "4.4.2" + "node_modules/@jest/core/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" } }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "node_modules/@jest/core/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 }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "es5-ext": "0.10.30" + "engines": { + "node": ">=8" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "1.0.0" + "node_modules/@jest/core/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, - "requires": { - "type-detect": "0.1.1" - }, "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "dependency-lint": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dependency-lint/-/dependency-lint-5.0.1.tgz", - "integrity": "sha1-LvdZqHvVYItr3Sr3csnWoVseias=", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "builtin-modules": "1.1.1", - "camel-case": "3.0.0", - "colors": "1.1.2", - "detective": "4.5.0", - "docopt": "0.6.2", - "fs-extra": "1.0.0", - "glob": "7.1.2", - "js-yaml": "3.8.4", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "semver": "5.3.0", - "sorted-object": "2.0.1" - } - }, - "deps-sort": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", - "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, - "requires": { - "JSONStream": "1.0.7", - "shasum": "1.0.2", - "subarg": "1.0.0", - "through2": "2.0.3" + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "detective": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", - "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, - "requires": { - "acorn": "4.0.13", - "defined": "1.0.0" + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "node_modules/@jest/reporters/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, - "requires": { - "bn.js": "4.11.7", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" + "engines": { + "node": ">=8" } }, - "docopt": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", - "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=", - "dev": true + "node_modules/@jest/reporters/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" + } }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "node_modules/@jest/reporters/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, - "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "node_modules/@jest/reporters/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 }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "readable-stream": "2.3.3" + "engines": { + "node": ">=8" } }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, - "requires": { - "jsbn": "0.1.1" + "node_modules/@jest/reporters/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "bn.js": "4.11.7", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", - "dev": true - }, - "engine.io": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", - "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, - "requires": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "ws": "1.1.2" - }, "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "engine.io-client": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", - "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "1.1.2", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, - "requires": { - "prr": "0.0.0" + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "node_modules/@jest/transform/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, - "requires": { - "is-arrayish": "0.2.1" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "es5-ext": { - "version": "0.10.30", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", - "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "es6-iterator": { + "node_modules/@jest/transform/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-symbol": "3.1.1" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "node_modules/@jest/transform/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/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "engines": { + "node": ">=8" } }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "node_modules/@jest/types/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, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/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/@jest/types/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 }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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, + "engines": { + "node": ">=6.0.0" + } + }, + "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 }, - "escope": { + "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, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.7.2.tgz", - "integrity": "sha1-/29fUZOEiifum2J74+c/ucteZi4=", - "dev": true, - "requires": { - "ajv": "5.2.3", - "babel-code-frame": "6.26.0", - "chalk": "2.1.0", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.3.0", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - } + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" } }, - "eslint-config-google": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.9.1.tgz", - "integrity": "sha512-5A83D+lH0PA81QMESKbLJd/a3ic8tPZtwUmqNrxMRo54nfFaUvtt89q/+icQ+fd66c2xQHn0KyFkzJDoAUfpZA==", + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", "dev": true }, - "eslint-config-prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.6.0.tgz", - "integrity": "sha1-8h2w67Q4rWePuYlGCXxLsZi+/Mw=", + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", "dev": true, - "requires": { - "get-stdin": "5.0.1" + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" } }, - "eslint-plugin-node": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.0.tgz", - "integrity": "sha512-N9FLFwknT5LhRhjz1lmHguNss/MCwkrLCS4CjqqTZZTJaUhLRfDNK3zxSHL/Il3Aa0Mw+xY3T1gtsJrUNoJy8Q==", + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, - "requires": { - "ignore": "3.3.5", - "minimatch": "3.0.4", - "resolve": "1.3.3", - "semver": "5.3.0" + "peerDependencies": { + "@octokit/core": ">=3" } }, - "eslint-plugin-prettier": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz", - "integrity": "sha512-AV8shBlGN9tRZffj5v/f4uiQWlP3qiQ+lh+BhTqRLuKSyczx+HRWVkVZaf7dOmguxghAH1wftnou/JUEEChhGg==", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", "dev": true, - "requires": { - "fast-diff": "1.1.2", - "jest-docblock": "21.2.0" + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" } }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", "dev": true, - "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" } }, - "espree": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", - "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dev": true, - "requires": { - "acorn": "5.1.2", - "acorn-jsx": "3.0.1" - }, "dependencies": { - "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", - "dev": true - } + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" } }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "dependencies": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "dev": true, - "requires": { - "estraverse": "4.2.0" + "dependencies": { + "@octokit/openapi-types": "^12.11.0" } }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "node_modules/@semantic-release/changelog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-5.0.1.tgz", + "integrity": "sha512-unvqHo5jk4dvAf2nZ3aw4imrlwQ2I50eVVvq9D47Qc3R+keNqepx1vDYwkjF8guFXnOYaYcR28yrZWno1hFbiw==", "dev": true, - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "dependencies": { + "@semantic-release/error": "^2.1.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^9.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "semantic-release": ">=15.8.0 <18.0.0" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true + "node_modules/@semantic-release/commit-analyzer": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-8.0.1.tgz", + "integrity": "sha512-5bJma/oB7B4MtwUkZC2Bf7O1MHfi4gWe4mA+MIQ3lsEV0b422Bvl1z5HRpplDnMLHH3EXMoRdEng6Ds5wUqA3A==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.7", + "debug": "^4.0.0", + "import-from": "^3.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "semantic-release": ">=16.0.0 <18.0.0" + } }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "node_modules/@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "node_modules/@semantic-release/git": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-9.0.1.tgz", + "integrity": "sha512-75P03s9v0xfrH9ffhDVWRIX0fgWBvJMmXhUU0rMTKYz47oMXU5O95M/ocgIKnVJlWZYoC+LpIe4Ye6ev8CrlUQ==", "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" + "dependencies": { + "@semantic-release/error": "^2.1.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "semantic-release": ">=16.0.0 <18.0.0" } }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true + "node_modules/@semantic-release/github": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-7.2.3.tgz", + "integrity": "sha512-lWjIVDLal+EQBzy697ayUNN8MoBpp+jYIyW2luOdqn5XBH4d9bQGfTnjuLyzARZBHejqh932HVjiH/j4+R7VHw==", + "dev": true, + "dependencies": { + "@octokit/rest": "^18.0.0", + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "bottleneck": "^2.18.1", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^10.0.0", + "globby": "^11.0.0", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "issue-parser": "^6.0.0", + "lodash": "^4.17.4", + "mime": "^2.4.3", + "p-filter": "^2.0.0", + "p-retry": "^4.0.0", + "url-join": "^4.0.0" + }, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "semantic-release": ">=16.0.0 <18.0.0" + } }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true + "node_modules/@semantic-release/github/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } }, - "evp_bytestokey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", + "node_modules/@semantic-release/npm": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-7.1.3.tgz", + "integrity": "sha512-x52kQ/jR09WjuWdaTEHgQCvZYMOTx68WnS+TZ4fya5ZAJw4oRtJETtrvUw10FdfM28d/keInQdc66R1Gw5+OEQ==", "dev": true, - "requires": { - "create-hash": "1.1.3" + "dependencies": { + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "execa": "^5.0.0", + "fs-extra": "^10.0.0", + "lodash": "^4.17.15", + "nerf-dart": "^1.0.0", + "normalize-url": "^6.0.0", + "npm": "^7.0.0", + "rc": "^1.2.8", + "read-pkg": "^5.0.0", + "registry-auth-token": "^4.0.0", + "semver": "^7.1.2", + "tempy": "^1.0.0" + }, + "engines": { + "node": ">=10.19" + }, + "peerDependencies": { + "semantic-release": ">=16.0.0 <18.0.0" } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "node_modules/@semantic-release/npm/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" - }, - "dependencies": { - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true, - "requires": { - "expand-range": "0.1.1" - } - }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true, - "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" - } - }, - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } + "node_modules/@semantic-release/npm/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "node_modules/@semantic-release/release-notes-generator": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-9.0.3.tgz", + "integrity": "sha512-hMZyddr0u99OvM2SxVOIelHzly+PP3sYtJ8XOLHdMp8mrluN5/lpeTnIO27oeCYdupY/ndoGfvrqDjHqkSyhVg==", "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" + "dependencies": { + "conventional-changelog-angular": "^5.0.0", + "conventional-changelog-writer": "^4.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.0", + "debug": "^4.0.0", + "get-stream": "^6.0.0", + "import-from": "^3.0.0", + "into-stream": "^6.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^7.0.0" + }, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "semantic-release": ">=15.8.0 <18.0.0" } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "node_modules/@sentry-internal/tracing": { + "version": "7.120.4", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.4.tgz", + "integrity": "sha512-Fz5+4XCg3akeoFK+K7g+d7HqGMjmnLoY2eJlpONJmaeT9pXY7yfUyXKZMmMajdE2LxxKJgQ2YKvSCaGVamTjHw==", "dev": true, - "requires": { - "fill-range": "2.2.3" + "dependencies": { + "@sentry/core": "7.120.4", + "@sentry/types": "7.120.4", + "@sentry/utils": "7.120.4" + }, + "engines": { + "node": ">=8" } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "node_modules/@sentry/core": { + "version": "7.120.4", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.4.tgz", + "integrity": "sha512-TXu3Q5kKiq8db9OXGkWyXUbIxMMuttB5vJ031yolOl5T/B69JRyAoKuojLBjRv1XX583gS1rSSoX8YXX7ATFGA==", + "dev": true, + "dependencies": { + "@sentry/types": "7.120.4", + "@sentry/utils": "7.120.4" + }, + "engines": { + "node": ">=8" + } }, - "external-editor": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", - "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", + "node_modules/@sentry/integrations": { + "version": "7.120.4", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.4.tgz", + "integrity": "sha512-kkBTLk053XlhDCg7OkBQTIMF4puqFibeRO3E3YiVc4PGLnocXMaVpOSCkMqAc1k1kZ09UgGi8DxfQhnFEjUkpA==", "dev": true, - "requires": { - "iconv-lite": "0.4.19", - "jschardet": "1.5.1", - "tmp": "0.0.33" + "dependencies": { + "@sentry/core": "7.120.4", + "@sentry/types": "7.120.4", + "@sentry/utils": "7.120.4", + "localforage": "^1.8.1" + }, + "engines": { + "node": ">=8" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "node_modules/@sentry/node": { + "version": "7.120.4", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.4.tgz", + "integrity": "sha512-qq3wZAXXj2SRWhqErnGCSJKUhPSlZ+RGnCZjhfjHpP49KNpcd9YdPTIUsFMgeyjdh6Ew6aVCv23g1hTP0CHpYw==", "dev": true, - "requires": { - "is-extglob": "1.0.0" + "dependencies": { + "@sentry-internal/tracing": "7.120.4", + "@sentry/core": "7.120.4", + "@sentry/integrations": "7.120.4", + "@sentry/types": "7.120.4", + "@sentry/utils": "7.120.4" + }, + "engines": { + "node": ">=8" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "node_modules/@sentry/types": { + "version": "7.120.4", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.4.tgz", + "integrity": "sha512-cUq2hSSe6/qrU6oZsEP4InMI5VVdD86aypE+ENrQ6eZEVLTCYm1w6XhW1NvIu3UuWh7gZec4a9J7AFpYxki88Q==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "node_modules/@sentry/utils": { + "version": "7.120.4", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.4.tgz", + "integrity": "sha512-zCKpyDIWKHwtervNK2ZlaK8mMV7gVUijAgFeJStH+CU/imcdquizV3pFLlSQYRswG+Lbyd6CT/LGRh3IbtkCFw==", + "dev": true, + "dependencies": { + "@sentry/types": "7.120.4" + }, + "engines": { + "node": ">=8" + } }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" + "dependencies": { + "@sinonjs/commons": "^3.0.0" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "engines": { + "node": ">= 6" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true + "node_modules/@types/async": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.25.tgz", + "integrity": "sha512-O6Th/DI18XjrL9TX8LO9F/g26qAz5vynmQqlXt/qLGrskvzCKXKc5/tATz3G2N6lM8eOf3M8/StB14FncAmocg==" }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@babel/types": "^7.0.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "requires": { - "locate-path": "2.0.0" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", "dev": true, - "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "optional": true, + "dependencies": { + "@types/node": "*" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/extend": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.4.tgz", + "integrity": "sha512-ArMouDUTJEz1SQRpFsT2rIw7DeqICFv5aaVzLSIYMYQSLcwcGOfT3VyglQs/p7K3F7fT4zxr0NWxYZIdifD6dA==" }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, - "requires": { - "for-in": "1.0.2" + "dependencies": { + "@types/node": "*" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true + "node_modules/@types/ignore-walk": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/ignore-walk/-/ignore-walk-3.0.2.tgz", + "integrity": "sha512-piannjEnKe/Ka68B2kz6lhs/Yv7T7aKgMGaqfZ4IZUK18KUk4VS1cpke+8s76JjNigFWcOydfG/KKnAuxmWTFA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "node_modules/@types/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-EE11Sn7gzHEF9FGkYHTkFpPuDEamLudLvaGnBciNgH55fTYboWZHINR6MP8+CfCOjPJX08l4teRrjCY11gz1CA==" }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "fs-access": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "requires": { - "null-check": "1.0.0" + "dependencies": { + "@types/istanbul-lib-report": "*" } }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", "dev": true }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "node_modules/@types/node": { + "version": "13.13.52", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz", + "integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "node_modules/@types/websocket": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.10.tgz", + "integrity": "sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - }, "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } + "@types/yargs-parser": "*" } }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, - "functional-red-black-tree": { + "node_modules/@voxpelli/semver-set": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true + "resolved": "https://registry.npmjs.org/@voxpelli/semver-set/-/semver-set-1.0.1.tgz", + "integrity": "sha512-iX4U4cSYjaI3rQtVbgQa020HOBLAJ/52osBg5y2UTk1FqrYy9Jc+IrQXmgq2/rsewqLOLMrmIyKLjycth/8ZGg==", + "dev": true, + "dependencies": { + "cartesian-product": "^2.1.2", + "invariant": "^2.1.0", + "semver": "^5.4.1" + }, + "engines": { + "node": ">=4.0.0" + } }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true + "node_modules/@voxpelli/semver-set/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "get-stream": { + "node_modules/abort-controller": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "1.0.0" + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "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, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", "dev": true, - "requires": { - "is-glob": "2.0.1" + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", "dev": true }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha512-dEamhpPEwRUBpLNHeuCm/v+g0anFByHahxodVO/BbAarHVBBg2MccCwf9K+o1Pof+2btdnkJelYVUWjW/VrATw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "engines": { + "node": ">=0.6.10" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, - "har-schema": { + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "5.2.3", - "har-schema": "2.0.0" + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/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/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/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/babel-jest/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/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.12.tgz", + "integrity": "sha512-vAPMQdnyKCBtkmQA6FMCBvU9qFIppS3nzyXnEM+Lo2IAhG4Mpjv9cCxMudhgV3YdNNJv6TNqXy97dfRVL2LmaQ==", + "dev": true, + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "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" + } + ], + "dependencies": { + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "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/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001748", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001748.tgz", + "integrity": "sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==", + "dev": true, + "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" + } + ] + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/cartesian-product": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cartesian-product/-/cartesian-product-2.1.2.tgz", + "integrity": "sha512-Jsrlfq3wdqW+bL21On+aBV678QKGuo+lr79IkXdfYfqKYoJWWemm8g6YC3bBSzyG2AWiGsHqv5i8vCttKHUZlA==", + "dev": true + }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "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, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/codecov": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "deprecated": "https://about.codecov.io/blog/codecov-uploader-deprecation-plan/", + "dev": true, + "dependencies": { + "argv": "0.0.2", + "ignore-walk": "3.0.4", + "js-yaml": "3.14.1", + "teeny-request": "7.1.1", + "urlgrey": "1.0.0" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "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/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commitizen": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.1.tgz", + "integrity": "sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==", + "dev": true, + "dependencies": { + "cachedir": "2.3.0", + "cz-conventional-changelog": "3.3.0", + "dedent": "0.7.0", + "detect-indent": "6.1.0", + "find-node-modules": "^2.1.2", + "find-root": "1.1.0", + "fs-extra": "9.1.0", + "glob": "7.2.3", + "inquirer": "8.2.5", + "is-utf8": "^0.2.1", + "lodash": "4.17.21", + "minimist": "1.2.7", + "strip-bom": "4.0.0", + "strip-json-comments": "3.1.1" + }, + "bin": { + "commitizen": "bin/commitizen", + "cz": "bin/git-cz", + "git-cz": "bin/git-cz" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz", + "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commit-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", + "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", + "dev": true + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "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 + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "optional": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/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, + "optional": true + }, + "node_modules/cosmiconfig/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==", + "dev": true, + "optional": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/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/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-jest/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/create-jest/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/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cz-conventional-changelog": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", + "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.230", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.230.tgz", + "integrity": "sha512-A6A6Fd3+gMdaed9wX83CvHYJb4UuapPD5X5SLq72VZJzxHSY0/LUweGXRWmQlh2ln7KV7iw7jnwXK7dlPoOnHQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/enquirer/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-ci": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", + "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "fromentries": "^1.3.2", + "java-properties": "^1.0.0" + }, + "engines": { + "node": ">=10.17" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "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/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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/eslint/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/eslint/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/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint/node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/inquirer/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execa/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "optional": true + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dev": true, + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "dev": true, + "dependencies": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "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": ">=8" + } + }, + "node_modules/find-versions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", + "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", + "dev": true, + "dependencies": { + "semver-regex": "^3.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/gensync": { + "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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-log-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", + "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "dev": true, + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "0.6.8" + } + }, + "node_modules/git-log-parser/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/git-log-parser/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dev": true, + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/git-log-parser/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/git-log-parser/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-agent/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "optional": true, + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hook-std": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ibm-cloud-sdk-core": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-5.4.3.tgz", + "integrity": "sha512-D0lvClcoCp/HXyaFlCbOT4aTYgGyeIb4ncxZpxRuiuw7Eo79C6c49W53+8WJRD9nxzT5vrIdaky3NBcTdBtaEg==", + "dependencies": { + "@types/debug": "^4.1.12", + "@types/node": "^18.19.80", + "@types/tough-cookie": "^4.0.0", + "axios": "^1.12.2", + "camelcase": "^6.3.0", + "debug": "^4.3.4", + "dotenv": "^16.4.5", + "extend": "3.0.2", + "file-type": "16.5.4", + "form-data": "^4.0.4", + "isstream": "0.1.2", + "jsonwebtoken": "^9.0.2", + "mime-types": "2.1.35", + "retry-axios": "^2.6.0", + "tough-cookie": "^4.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/ibm-cloud-sdk-core/node_modules/@types/node": { + "version": "18.19.129", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.129.tgz", + "integrity": "sha512-hrmi5jWt2w60ayox3iIXwpMEnfUvOLJCRtrOPbHtH15nTjvO7uhnelvrdAs0dO0/zl5DZ3ZbahiaXEVb54ca/A==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "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", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/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/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/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/inquirer/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/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/installed-check": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/installed-check/-/installed-check-3.0.0.tgz", + "integrity": "sha512-4fq+TR/1mS2c4tm2YNo5XDDUxP1YJKKfrPoqJcrpRUNGl8cD0iPjBAjNkRZfGJbvdpm8fcpISn6Fr2q+aUoWYQ==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "dashdash": "^1.14.0", + "installed-check-core": "^3.0.0" + }, + "bin": { + "installed-check": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/installed-check-core": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/installed-check-core/-/installed-check-core-3.0.0.tgz", + "integrity": "sha512-gYgMo1JKNryqdi/OArY4xyfIWKwvqJSn7bD1wIZkp00Tg4lSVMnhw85vMFqb/qGqhF4jBwA739HpWh/Dq1UcvA==", + "dev": true, + "dependencies": { + "@voxpelli/semver-set": "^1.0.1", + "read-installed": "^4.0.3", + "read-package-json": "^2.0.3", + "semver": "^5.1.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/installed-check-core/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "dev": true, + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dev": true, + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/istanbul-lib-coverage": { + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "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, + "dependencies": { + "@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": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/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/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/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/jest-circus/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/jest-circus/node_modules/dedent": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/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/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/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/jest-cli/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/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/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/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/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/jest-config/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/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/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/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/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/jest-diff/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/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/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/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/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/jest-each/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/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/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/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/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/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/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/jest-message-util/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/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/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/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/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/jest-resolve/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/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/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/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/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/jest-runner/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/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/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/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/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/jest-runtime/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/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/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/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/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/jest-snapshot/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/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/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/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/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/jest-util/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/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/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/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/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/jest-validate/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/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/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/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/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/jest-watcher/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/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "optional": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "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 + }, + "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==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/jsdoc": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", + "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.9.4", + "@types/markdown-it": "^12.2.3", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.2" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsdoc/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdoc/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "optional": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lint-staged": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", + "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "cli-truncate": "^2.1.0", + "commander": "^6.2.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.2.0", + "dedent": "^0.7.0", + "enquirer": "^2.3.6", + "execa": "^4.1.0", + "listr2": "^3.2.2", + "log-symbols": "^4.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "^3.3.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/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/lint-staged/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/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/lint-staged/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/lint-staged/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lint-staged/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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/lint-staged/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lint-staged/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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "dependencies": { + "lie": "3.1.1" + } + }, + "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": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "optional": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "optional": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "optional": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "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", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "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", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/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-update/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-update/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-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/longest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", + "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "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, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", + "dev": true, + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/markdown-it/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/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/node_modules/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", + "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "ansicolors", + "ansistyles", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "pacote", + "parse-conflict-json", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "workspaces": [ + "docs", + "packages/*" + ], + "dependencies": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-run-path/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "2.9.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "1.8.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "1.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/asn1": { + "version": "0.2.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/npm/node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aws-sign2": { + "version": "0.7.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/aws4": { + "version": "1.11.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/npm/node_modules/bin-links": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cacache": { + "version": "15.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/code-point-at": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/colors": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/npm/node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/dashdash": { + "version": "1.14.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extend": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extsprintf": { + "version": "1.3.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/forever-agent": { + "version": "0.6.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/getpass": { + "version": "0.1.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.8", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/har-schema": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/har-validator": { + "version": "5.1.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/http-signature": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "2.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.7.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsbn": { + "version": "0.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-schema": { + "version": "0.2.3", + "dev": true, + "inBundle": true + }, + "node_modules/npm/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsprim": { + "version": "1.4.1", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/npm/node_modules/just-diff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.5.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "9.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/mime-db": { + "version": "1.49.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/mime-types": { + "version": "2.1.32", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "3.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "1.4.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "7.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "2.7.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "2.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "8.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "2.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "6.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "5.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/number-is-nan": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/oauth-sign": { + "version": "0.9.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "dev": true, + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "11.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/performance-now": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/proc-log": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/psl": { + "version": "1.8.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/punycode": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/qs": { + "version": "6.5.2", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/request": { + "version": "2.88.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/npm/node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.6.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "6.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.10", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sshpk": { + "version": "1.16.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "inBundle": true, + "license": "Unlicense" + }, + "node_modules/npm/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm/node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/uuid": { + "version": "3.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm/node_modules/verror": { + "version": "1.10.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "node_modules/ora/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, - "requires": { - "function-bind": "1.1.0" + "engines": { + "node": ">=8" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "node_modules/ora/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, - "requires": { - "ansi-regex": "2.1.1" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "isarray": "0.0.1" - }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true + "node_modules/ora/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" + } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "node_modules/ora/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 }, - "has-symbol-support-x": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.3.0.tgz", - "integrity": "sha512-kLtS+N9qwz+Buc6TUfcW5iGb59hLLr5qfxTACi/0uGpH1u5NMNWsdU57KoYRBywvPykeRmu5qfB5x0chpDSWlg==" - }, - "has-to-string-tag-x": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.3.0.tgz", - "integrity": "sha512-Fu9Nwv8/VNJMvKjkldzXHO+yeX+TCelwUQ9dGW2LrAfHfHi6zVqQt+Qjilf0qGHvpl6Fap6o8aDhWhMt5hY/1g==", - "requires": { - "has-symbol-support-x": "1.3.0" + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "node_modules/ora/node_modules/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, - "requires": { - "inherits": "2.0.3" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "hat": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz", - "integrity": "sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo=", - "dev": true - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.0.2" + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "hnp": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/hnp/-/hnp-0.0.1.tgz", - "integrity": "sha1-2RSJpd/N9BznQVhCmKcwZldqkoY=" - }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "node_modules/p-filter/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, - "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" + "engines": { + "node": ">=6" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "httperror": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/httperror/-/httperror-0.2.3.tgz", - "integrity": "sha1-yW4NZsvPbg4Z2A5HJ6laCddf4Lg=", - "requires": { - "hnp": "0.0.1" + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "ignore": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", - "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", - "dev": true + "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": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "engines": { + "node": ">=8" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "requires": { - "source-map": "0.5.6" + "engines": { + "node": ">=6" } }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.1.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.0.5", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - } - }, - "insert-module-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", - "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", - "dev": true, - "requires": { - "JSONStream": "1.0.7", - "combine-source-map": "0.7.2", - "concat-stream": "1.5.2", - "is-buffer": "1.1.5", - "lexical-scope": "1.2.0", - "process": "0.11.10", - "through2": "2.0.3", - "xtend": "4.0.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", - "dev": true + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "invert-kv": { + "node_modules/parse-passwd": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-array-buffer-x": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-array-buffer-x/-/is-array-buffer-x-1.2.1.tgz", - "integrity": "sha1-V5GAaIthKzaRcA1smrM11v1GlVw=", - "requires": { - "has-to-string-tag-x": "1.3.0", - "is-object-like-x": "1.2.0", - "to-string-tag-x": "1.3.0" + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "node_modules/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, + "engines": { + "node": ">=8" + } }, - "is-binary-path": { + "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "requires": { - "binary-extensions": "1.8.0" + "engines": { + "node": ">=0.10.0" } }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, - "requires": { - "builtin-modules": "1.1.1" + "engines": { + "node": ">=4" } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "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 }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "requires": { - "is-primitive": "2.0.0" + "engines": { + "node": ">=8" } }, - "is-extendable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.0.tgz", - "integrity": "sha512-VGiiJgYv3MjU+7d7X7bzrTMOgCDh6NDeJvvHZVh1wqRQvPWQfza8VuZqPydwcH5s0LklmLzWT3fWGwUpit2G0w==", - "requires": { - "is-plain-object": "2.0.4" + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "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 }, - "is-function-x": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-function-x/-/is-function-x-1.3.0.tgz", - "integrity": "sha512-Fl/ISzgVp2vADPt6GS+LqakePfmF+JczZEv4LND+uTgOQWBB7jPootA1JmHn8X6idEirT0WPk+3pjoe4DQSx5w==", - "requires": { - "has-to-string-tag-x": "1.3.0", - "is-primitive": "2.0.0", - "to-string-tag-x": "1.3.0" + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "requires": { - "is-extglob": "1.0.0" + "engines": { + "node": ">=4" } }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, - "requires": { - "kind-of": "3.2.2" + "engines": { + "node": ">= 6" } }, - "is-object-like-x": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-object-like-x/-/is-object-like-x-1.2.0.tgz", - "integrity": "sha1-tZKdjxKrktrunS91S4MYRLzAjCE=", - "requires": { - "is-function-x": "1.3.0", - "is-primitive": "2.0.0" + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, - "requires": { - "is-path-inside": "1.0.0" + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, - "requires": { - "path-is-inside": "1.0.2" + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "3.0.1" - }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { + "node_modules/pkg-conf/node_modules/p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, - "requires": { - "tryit": "1.0.3" + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isarray": { + "node_modules/pkg-conf/node_modules/p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "requires": { - "isarray": "1.0.0" + "engines": { + "node": ">=4" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jest-docblock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", - "dev": true - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "js-yaml": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", - "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "3.1.3" + "dependencies": { + "semver-compare": "^1.0.0" } }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, - "requires": { - "xmlcreate": "1.0.2" + "engines": { + "node": ">= 0.8.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } }, - "jschardet": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", - "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==", - "dev": true - }, - "jsdoc": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", - "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", - "dev": true, - "requires": { - "babylon": "7.0.0-beta.19", - "bluebird": "3.5.0", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.6", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", - "taffydb": "2.6.2", - "underscore": "1.8.3" + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { - "klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - } + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "json-bigint": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.1.4.tgz", - "integrity": "sha1-tdQLipAJ6S8Vf3wHnbCXABgw4B4=", - "requires": { - "bignumber.js": "1.1.1" + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" } }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" } }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, - "requires": { - "graceful-fs": "4.1.11" + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" } }, - "karma": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", - "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "body-parser": "1.18.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.5", - "core-js": "2.5.1", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.4.1", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.1.5", - "range-parser": "1.2.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "socket.io": "1.7.3", - "source-map": "0.5.6", - "tmp": "0.0.31", - "useragent": "2.2.1" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" } + ] + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" } }, - "karma-browserify": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/karma-browserify/-/karma-browserify-5.1.1.tgz", - "integrity": "sha1-9kLXDXdtmrO3NSbFcyq8/qJAAxk=", - "dev": true, - "requires": { - "convert-source-map": "1.1.3", - "hat": "0.0.3", - "js-string-escape": "1.0.1", - "lodash": "3.10.1", - "minimatch": "3.0.4", - "os-shim": "0.1.3" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ] + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" } }, - "karma-chrome-launcher": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, - "requires": { - "fs-access": "1.0.1", - "which": "1.2.14" + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" } }, - "karma-firefox-launcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz", - "integrity": "sha1-zlj0fCATqIFW1VpdYTN8CZz1u1E=", + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "karma-mocha": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", - "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "requires": { - "minimist": "1.2.0" + "engines": { + "node": ">=0.10.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/read-installed": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", + "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==", + "deprecated": "This package is no longer supported.", "dev": true, - "requires": { - "is-buffer": "1.1.5" + "dependencies": { + "debuglog": "^1.0.1", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.2" } }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "node_modules/read-installed/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "requires": { - "graceful-fs": "4.1.11" + "bin": { + "semver": "bin/semver" } }, - "labeled-stream-splicer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", - "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "node_modules/read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, - "requires": { - "inherits": "2.0.3", - "isarray": "0.0.1", - "stream-splicer": "2.0.0" - }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" } }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "requires": { - "invert-kv": "1.0.0" + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lexical-scope": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", - "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "requires": { - "astw": "2.2.0" + "engines": { + "node": ">=8" } }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true + "node_modules/readable-web-to-node-stream": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz", + "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==", + "dependencies": { + "readable-stream": "^4.7.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readable-web-to-node-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } }, - "loader-utils": { + "node_modules/readdir-scoped-modules": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dev": true, + "dependencies": { + "esprima": "~4.0.0" + } }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "engines": { + "node": ">=6.5.0" } }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, - "lodash.isnull": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnull/-/lodash.isnull-3.0.0.tgz", - "integrity": "sha1-+vvlnqHcon7teGU0A53YTC4HxW4=" + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "node_modules/requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "dependencies": { + "lodash": "^4.17.21" } }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", - "dev": true - }, - "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, - "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "longest": { + "node_modules/resolve-dir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "engines": { + "node": ">=8" } }, - "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", - "dev": true + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "requires": { - "mimic-fn": "1.1.0" + "engines": { + "node": ">= 4" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - } + "node_modules/retry-axios": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-2.6.0.tgz", + "integrity": "sha512-pOLi+Gdll3JekwuFjXO3fTq+L9lzMQGcSq7M5gIjExcl3Gu1hd4XXuf5o3+LuSBsaULQH7DiNbsqPd1chVpQGQ==", + "engines": { + "node": ">=10.7.0" + }, + "peerDependencies": { + "axios": "*" } }, - "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, - "requires": { - "bn.js": "4.11.7", - "brorand": "1.1.0" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "mime": { + "node_modules/rfdc": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "requires": { - "mime-db": "1.27.0" + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "node_modules/roarr/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, - "requires": { - "brace-expansion": "1.1.8" + "engines": { + "node": ">=0.12.0" } }, - "minimist": { + "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, - "requires": { - "minimist": "0.0.8" - }, "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "tslib": "^2.1.0" } }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semantic-release": { + "version": "17.4.7", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-17.4.7.tgz", + "integrity": "sha512-3Ghu8mKCJgCG3QzE5xphkYWM19lGE3XjFdOXQIKBM2PBpBvgFQ/lXv31oX0+fuN/UjNFO/dqhNs8ATLBhg6zBg==", + "dev": true, + "dependencies": { + "@semantic-release/commit-analyzer": "^8.0.0", + "@semantic-release/error": "^2.2.0", + "@semantic-release/github": "^7.0.0", + "@semantic-release/npm": "^7.0.0", + "@semantic-release/release-notes-generator": "^9.0.0", + "aggregate-error": "^3.0.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.0.0", + "env-ci": "^5.0.0", + "execa": "^5.0.0", + "figures": "^3.0.0", + "find-versions": "^4.0.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^2.0.0", + "hosted-git-info": "^4.0.0", + "lodash": "^4.17.21", + "marked": "^2.0.0", + "marked-terminal": "^4.1.1", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^7.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^3.1.1", + "signale": "^1.2.1", + "yargs": "^16.2.0" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=10.19" } }, - "module-deps": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", - "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", - "dev": true, - "requires": { - "JSONStream": "1.0.7", - "browser-resolve": "1.11.2", - "cached-path-relative": "1.0.1", - "concat-stream": "1.5.2", - "defined": "1.0.0", - "detective": "4.5.0", - "duplexer2": "0.1.4", - "inherits": "2.0.3", - "parents": "1.0.1", - "readable-stream": "2.3.3", - "resolve": "1.3.3", - "stream-combiner2": "1.1.1", - "subarg": "1.0.0", - "through2": "2.0.3", - "xtend": "4.0.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - } - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "node_modules/semantic-release/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, + "engines": { + "node": ">=8" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "node_modules/semantic-release/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" + } }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true + "node_modules/semantic-release/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" + "node_modules/semantic-release/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==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "node_modules/semantic-release/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" + } }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "node_modules/semantic-release/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 }, - "no-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", - "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "node_modules/semantic-release/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "lower-case": "1.1.4" + "engines": { + "node": ">=8" } }, - "nock": { - "version": "9.0.22", - "resolved": "https://registry.npmjs.org/nock/-/nock-9.0.22.tgz", - "integrity": "sha512-F5+Z5jhDourTtGIAEdqdtLhuAqO22Kg2rrvszgxwDPl8rMkw/pY0RJUHvFV/4bv1/oReZRAokMNGrUIQlKi/BQ==", + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "requires": { - "chai": "3.5.0", - "debug": "2.6.8", - "deep-equal": "1.0.1", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "propagate": "0.4.0", - "qs": "6.4.0", - "semver": "5.3.0" + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "node-libs-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", - "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", - "dev": true, - "requires": { - "setimmediate": "1.0.5" - } - } + "node_modules/semantic-release/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "node_modules/semantic-release/node_modules/marked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.1" + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 10" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/semantic-release/node_modules/marked-terminal": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-4.2.0.tgz", + "integrity": "sha512-DQfNRV9svZf0Dm9Cf5x5xaVJ1+XjxQW6XjFJ5HFkVyK52SDpj5PCBzS5X5r2w9nHr3mlB0T5201UMLue9fmhUw==", "dev": true, - "requires": { - "remove-trailing-separator": "1.0.2" + "dependencies": { + "ansi-escapes": "^4.3.1", + "cardinal": "^2.1.1", + "chalk": "^4.1.0", + "cli-table3": "^0.6.0", + "node-emoji": "^1.10.0", + "supports-hyperlinks": "^2.1.0" + }, + "peerDependencies": { + "marked": "^1.0.0 || ^2.0.0" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "node_modules/semantic-release/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "requires": { - "path-key": "2.0.1" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "node_modules/semantic-release/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true + "node_modules/semantic-release/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "node_modules/semantic-release/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", + "node_modules/semantic-release/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.0", - "object-keys": "1.0.11" + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "object.omit": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", - "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", - "requires": { - "is-extendable": "1.0.0" + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "3.0.1" - }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "node_modules/semver-regex": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", + "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", "dev": true, - "requires": { - "ee-first": "1.1.1" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", "dev": true, - "requires": { - "wrappy": "1.0.2" + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, - "requires": { - "mimic-fn": "1.1.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, - "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" - }, "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "engines": { + "node": ">=0.10.0" } }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "os-browserify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", - "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" } }, - "os-shim": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "outpipe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", - "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, - "requires": { - "shell-quote": "1.6.1" + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { + "node_modules/signale/node_modules/figures": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, - "requires": { - "p-limit": "1.1.0" + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" } }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "requires": { - "path-platform": "0.11.15" + "engines": { + "node": ">=8" } }, - "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.6", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "pbkdf2": "3.0.12" + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "node_modules/slice-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==", "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "node_modules/slice-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, - "requires": { - "error-ex": "1.3.1" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "node_modules/slice-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/slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", "dev": true, - "requires": { - "better-assert": "1.0.2" + "engines": { + "node": "*" + } + }, + "node_modules/snyk": { + "version": "1.1299.1", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1299.1.tgz", + "integrity": "sha512-JMVqIDy2pP2vXBDmqP3OeArrAEdnhyeK6NDfIHGbx3tC8iI9gu7MluBx3bQX9c/Xt/iN5Bfu7LuelBHWwhQgCQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@sentry/node": "^7.36.0", + "global-agent": "^3.0.0" + }, + "bin": { + "snyk": "bin/snyk" + }, + "engines": { + "node": ">=12" } }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "better-assert": "1.0.2" + "engines": { + "node": ">=0.10.0" } }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "requires": { - "better-assert": "1.0.2" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", "dev": true }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "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 + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } }, - "path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "requires": { - "pify": "2.3.0" + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "pbkdf2": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", - "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "engines": { + "node": ">=8" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, - "requires": { - "pinkie": "2.0.4" + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true + "node_modules/stream-combiner2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "node_modules/stream-combiner2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true + "node_modules/stream-combiner2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } }, - "prettier": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.7.2.tgz", - "integrity": "sha1-gTceZAGKr8ac8QMZVscOApM59U4=", - "dev": true + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "node_modules/stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", + "dev": true, + "dependencies": { + "debug": "2" + } }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true + "node_modules/stream-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } }, - "progress": { + "node_modules/stream-parser/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "dev": true - }, - "propagate": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-0.4.0.tgz", - "integrity": "sha1-8/zKCm/gZzanulcpZgaWF8EwtIE=", - "dev": true - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true, - "requires": { - "bn.js": "4.11.7", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "engines": { + "node": ">=0.6.19" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } }, - "qjobs": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", - "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", - "dev": true + "node_modules/string-length/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, + "engines": { + "node": ">=8" + } }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + "node_modules/string-length/node_modules/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "node_modules/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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } + "node_modules/string-width/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, + "engines": { + "node": ">=8" } }, - "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "node_modules/string-width/node_modules/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, - "requires": { - "safe-buffer": "5.1.1" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "node_modules/stringify-object/node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "dev": true, - "requires": { - "readable-stream": "2.3.3" + "engines": { + "node": ">=0.10.0" } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "engines": { + "node": ">=8" } }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "engines": { + "node": ">=6" } }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - }, - "dependencies": { - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "1.30.0" - } - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - } + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "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==", "dev": true, - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "requizzle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", - "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, - "requires": { - "underscore": "1.6.0" - }, "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" } }, - "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "path-parse": "1.0.5" + "engines": { + "node": ">=8" } }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, - "requires": { - "align-text": "0.1.4" + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "node_modules/table/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "requires": { - "glob": "7.1.2" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "node_modules/table/node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true, - "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "engines": { + "node": ">=4" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "requires": { - "is-promise": "2.1.0" + "engines": { + "node": ">=4" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "node_modules/table/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "node_modules/table/node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, - "requires": { - "rx-lite": "4.0.8" + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "node_modules/taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==", "dev": true }, - "set-blocking": { + "node_modules/teeny-request": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "set-immediate-shim": { + "node_modules/tempy": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "dev": true, + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "sha.js": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true, - "requires": { - "inherits": "2.0.3" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "shasum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", - "dev": true, - "requires": { - "json-stable-stringify": "0.0.1", - "sha.js": "2.4.8" - }, - "dependencies": { - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - } + "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==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, - "requires": { - "shebang-regex": "1.0.0" + "engines": { + "node": ">=0.10" } }, - "shebang-loader": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shebang-loader/-/shebang-loader-0.0.1.tgz", - "integrity": "sha1-pAAEldRMzu++xjQ157FphWn6Uuw=", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, - "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "dependencies": { + "readable-stream": "3" } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0" + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, - "sntp": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", - "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", - "requires": { - "hoek": "4.2.0" - } + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, - "socket.io": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", - "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "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==", "dev": true, - "requires": { - "debug": "2.3.3", - "engine.io": "1.8.3", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.7.3", - "socket.io-parser": "2.3.1" - }, "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", - "dev": true, - "requires": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" } }, - "socket.io-client": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", - "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", - "dev": true, - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "1.8.3", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" } }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", "dev": true, - "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" + "engines": { + "node": ">= 0.4" }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "solr-client": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/solr-client/-/solr-client-0.7.0.tgz", - "integrity": "sha1-uA/Mpsh3aD1XGLdaF3Jk8SIHt7g=", - "requires": { - "JSONStream": "1.0.7", - "bluebird": "3.5.0", - "duplexer": "0.1.1", - "httperror": "0.2.3", - "json-bigint": "0.1.4", - "request": "2.81.0" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "requires": { - "hoek": "2.16.3" - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "requires": { - "boom": "2.10.1" - } - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "requires": { - "hoek": "2.16.3" - } - } + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" } }, - "sorted-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/sorted-object/-/sorted-object-2.0.1.tgz", - "integrity": "sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw=", + "node_modules/tsc-publish": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/tsc-publish/-/tsc-publish-0.5.2.tgz", + "integrity": "sha512-Z/2yZSVFoeEgziTVeYc+jc6+2AygX9dnbwB6f3XuI4sSgTjoq5ggRGoTtuKcI91FzUeJq88rVZkN/VZmjbSzPw==", + "deprecated": "Package renamed to @masterodin/publisher", + "dev": true, + "dependencies": { + "@types/ignore-walk": "^3.0.1", + "@types/node": "^12.12.5", + "ansi-colors": "^4.1.1", + "commander": "^3.0.0", + "ignore-walk": "^3.0.3", + "strip-json-comments": "^3.0.1" + }, + "bin": { + "tsc-publish": "index.js" + } + }, + "node_modules/tsc-publish/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 }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "node_modules/tsc-publish/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true + "node_modules/tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "dev": true, + "bin": { + "tslint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">=4.0.0" + } }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "node_modules/tslint/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "node_modules/tslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "requires": { - "duplexer2": "0.1.4", - "readable-stream": "2.3.3" + "engines": { + "node": ">=4" } }, - "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "engines": { + "node": ">=8" } }, - "stream-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.17.8", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.8.tgz", + "integrity": "sha512-/OyrHCJ8jtzu+QZ+771YaxQ9s4g5Z3XsQE3Ma7q+BL392xxBn4UMvvCdVnqKC2T/dz03/VXSLVKOP3lHmDdc/w==", "dev": true, - "requires": { - "debug": "2.6.8" + "dependencies": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.6", + "highlight.js": "^10.0.0", + "lodash": "^4.17.15", + "lunr": "^2.3.8", + "marked": "1.0.0", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "typedoc-default-themes": "^0.10.2" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "typescript": ">=3.8.3" } }, - "stream-splicer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", - "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "node_modules/typedoc-default-themes": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.2.tgz", + "integrity": "sha512-zo09yRj+xwLFE3hyhJeVHWRSPuKEIAsFK5r2u47KL/HBKqpwdUSanoaz5L34IKiSATFrjG5ywmIu98hPVMfxZg==", + "dev": true, + "dependencies": { + "lunr": "^2.3.8" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/typedoc/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typedoc/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/typedoc/node_modules/marked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz", + "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==", "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 8.16.2" } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "node_modules/typedoc/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "requires": { - "safe-buffer": "5.1.1" + "engines": { + "node": ">= 4.0.0" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, - "requires": { - "ansi-regex": "3.0.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } + "engines": { + "node": ">=4.2.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, - "requires": { - "minimist": "1.2.0" + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", "dev": true }, - "syntax-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", - "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", - "dev": true, - "requires": { - "acorn": "4.0.13" - } + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "requires": { - "ajv": "5.2.3", - "ajv-keywords": "2.1.0", - "chalk": "2.1.0", - "lodash": "4.17.4", - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - }, - "dependencies": { - "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - } + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" + "engines": { + "node": ">= 10.0.0" } }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, - "requires": { - "process": "0.11.10" + "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" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { - "os-tmpdir": "1.0.2" + "dependencies": { + "punycode": "^2.1.0" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, - "to-string-tag-x": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/to-string-tag-x/-/to-string-tag-x-1.3.0.tgz", - "integrity": "sha512-1OxhYAfFFvjjpGoc0qTRPvxpuWIzyMRpNTQjwE4T7oMlo0NiHrgVwoM96NojjWDCoctVo/PASdipNL/JzdiSjw==", - "requires": { - "lodash.isnull": "3.0.0", - "validate.io-undefined": "1.0.3" + "node_modules/urlgrey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", + "dev": true, + "dependencies": { + "fast-url-parser": "^1.1.3" } }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "requires": { - "punycode": "1.4.1" + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" } }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "node_modules/util-extend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", + "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "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==", "dev": true, - "requires": { - "prelude-ls": "1.1.2" + "bin": { + "uuid": "dist/bin/uuid" } }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.15" + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz", - "integrity": "sha1-EBezLZhP9VbroQD1AViauhrOLgQ=", - "requires": { - "is-typedarray": "1.0.0" + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "uglify-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.2.tgz", - "integrity": "sha512-kKJ8zg7Ivw3DG9Ytgp4+iiSHq3HaHjEQMvyT2x2Bs8kSUwVemj6bPGFp6YWL81f5NAIOLVUKPxBSvqLRGXMpdw==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "requires": { - "commander": "2.11.0", - "source-map": "0.5.6" - }, "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - } + "makeerror": "1.0.12" } }, - "uglify-to-browserify": { + "node_modules/wav": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz", + "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==", "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "0.5.6", - "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" - }, - "dependencies": { - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } + "dependencies": { + "buffer-alloc": "^1.1.0", + "buffer-from": "^1.0.0", + "debug": "^2.2.0", + "readable-stream": "^1.1.14", + "stream-parser": "^0.3.1" } }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true + "node_modules/wav/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } }, - "umd": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", - "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "node_modules/wav/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "node_modules/wav/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "underscore-contrib": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "node_modules/wav/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, - "requires": { - "underscore": "1.6.0" - }, "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "node_modules/wav/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } + "defaults": "^1.0.3" } }, - "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", - "dev": true, - "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.33" - }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/websocket": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz", + "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.63", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" } }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } + "ms": "2.0.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "validate.io-undefined": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/validate.io-undefined/-/validate.io-undefined-1.0.3.tgz", - "integrity": "sha1-fif8uzFbhB54JDQxiXZxkp4gt/Q=" - }, - "vcap_services": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/vcap_services/-/vcap_services-0.3.4.tgz", - "integrity": "sha1-FUv5QEAlEqzKI98iY/xg72aEWto=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "requires": { - "indexof": "0.0.1" + "engines": { + "node": ">=0.10.0" } }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, - "watchify": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.9.0.tgz", - "integrity": "sha1-8HX9LoqGrN6Eztum5cKgvt1SPZ4=", + "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, - "requires": { - "anymatch": "1.3.0", - "browserify": "14.4.0", - "chokidar": "1.7.0", - "defined": "1.0.0", - "outpipe": "1.1.1", - "through2": "2.0.3", - "xtend": "4.0.1" + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "node_modules/wrap-ansi/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, - "requires": { - "async": "2.5.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" + "engines": { + "node": ">=8" } }, - "wav": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.1.tgz", - "integrity": "sha1-vy2l0NAW/ZB6DqY4Meo5GYwnzUA=", + "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==", "dev": true, - "requires": { - "debug": "2.6.8", - "readable-stream": "1.1.14", - "stream-parser": "0.3.1" - }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "webpack": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz", - "integrity": "sha512-OsHT3D0W0KmPPh60tC7asNnOmST6bKTiR90UyEdT9QYoaJ4OYN4Gg7WK1k3VxHK07ZoiYWPsKvlS/gAjwL/vRA==", - "dev": true, - "requires": { - "acorn": "5.1.2", - "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.3", - "ajv-keywords": "2.1.0", - "async": "2.5.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.0.4", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", - "source-map": "0.5.6", - "supports-color": "4.4.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.0.1", - "yargs": "8.0.2" - }, - "dependencies": { - "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", - "dev": true - }, - "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "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, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.5.6" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "websocket": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.24.tgz", - "integrity": "sha1-dJA+dfJUW2suHeFCW8HJBZF6GJA=", - "requires": { - "debug": "2.6.8", - "nan": "2.6.2", - "typedarray-to-buffer": "3.1.2", - "yaeti": "0.0.6" - } + "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 }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "node_modules/wrap-ansi/node_modules/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, - "requires": { - "isexe": "2.0.0" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "dev": true }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, - "requires": { - "mkdirp": "0.5.1" + "engines": { + "node": ">=0.4" } }, - "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "requires": { - "options": "0.0.6", - "ultron": "1.0.2" + "engines": { + "node": ">=10" } }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", - "dev": true + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "engines": { + "node": ">=0.10.32" + } }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" } }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "requires": { - "camelcase": "4.1.0" + "engines": { + "node": ">=10" }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true } } } diff --git a/package.json b/package.json index e46581b750..3b4edeb510 100644 --- a/package.json +++ b/package.json @@ -1,44 +1,21 @@ { - "name": "watson-developer-cloud", - "version": "2.42.0", - "description": "Client library to use the IBM Watson Services and AlchemyAPI", - "main": "./index", + "name": "ibm-watson", + "version": "12.2.0", + "description": "Client library to use the IBM Watson Services", "repository": { "type": "git", "url": "https://github.com/watson-developer-cloud/node-sdk.git" }, "keywords": [ + "assistant", + "discovery", "ibm", - "watson", - "wdc", - "watson developer cloud", - "chatbot", - "message resonance", - "user modeling", - "dialog", - "personality insights", - "machine translation", - "concept expansion", - "question and answer", - "relationship extraction", - "language identification", - "language translation", - "visual recognition ", + "natural language understanding", "speech to text", "text to speech", - "concept insights", - "tradeoff analytics", - "tone analyzer", - "retrieve and rank", - "natural language classifier", - "dialog", - "tone_analyzer", - "alchemy", - "alchemyapi", - "alchemy vision", - "alchemy language", - "alchemy datanews", - "conversation" + "watson developer cloud", + "watson", + "wdc" ], "author": "IBM Corp.", "contributors": [ @@ -53,6 +30,14 @@ { "name": "Jeff Stylos", "email": "jsstylos@us.ibm.com" + }, + { + "name": "Dustin Popp", + "email": "dustinpopp@ibm.com" + }, + { + "name": "Angelo Paparazzi", + "email": "angelo.paparazzi@ibm.com" } ], "license": "Apache-2.0", @@ -60,62 +45,76 @@ "url": "https://github.com/watson-developer-cloud/node-sdk/issues" }, "devDependencies": { - "browserify": "^14.4.0", - "concat-stream": "^1.5.1", - "dependency-lint": "^5.0.1", - "eslint": "^4.7.2", - "eslint-config-google": "^0.9.1", - "eslint-config-prettier": "^2.6.0", - "eslint-plugin-node": "^5.2.0", - "eslint-plugin-prettier": "^2.3.1", - "jsdoc": "^3.5.5", - "karma": "^1.7.1", - "karma-browserify": "^5.0.5", - "karma-chrome-launcher": "^2.2.0", - "karma-firefox-launcher": "^1.0.0", - "karma-mocha": "^1.1.1", - "memory-fs": "^0.4.1", - "mocha": "^3.5.3", - "nock": "^9.0.22", - "object.assign": "^4.0.4", - "prettier": "^1.7.2", - "shebang-loader": "0.0.1", - "uglify-js": "^3.1.2", - "watchify": "^3.7.0", - "wav": "^1.0.0", - "webpack": "^3.6.0" + "@ibm-cloud/sdk-test-utilities": "^1.0.0", + "@semantic-release/changelog": "^5.0.1", + "@semantic-release/git": "^9.0.0", + "axios": "^1.7.7", + "codecov": "^3.8.1", + "concat-stream": "^2.0.0", + "cz-conventional-changelog": "^3.3.0", + "eslint": "^6.8.0", + "eslint-config-google": "^0.14.0", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.3.1", + "installed-check": "^3.0.0", + "jest": "^29.7.0", + "jsdoc": "^3.6.6", + "lint-staged": "^10.5.3", + "prettier": "^2.2.1", + "semantic-release": "^17.3.1", + "snyk": "^1.437.3", + "tsc-publish": "^0.5.1", + "tslint": "^6.1.3", + "tslint-config-prettier": "^1.18.0", + "typedoc": "^0.17.8", + "typescript": "^4.9.4", + "wav": "~1.0.2" }, "dependencies": { - "async": "^2.5.0", - "buffer-from": "^0.1.1", - "cookie": "~0.3.1", - "csv-stringify": "~1.0.2", - "extend": "~3.0.0", + "@types/async": "^3.2.5", + "@types/extend": "^3.0.1", + "@types/isstream": "^0.1.0", + "@types/node": "^13.13.39", + "@types/websocket": "^1.0.1", + "async": "^3.2.0", + "camelcase": "^6.2.0", + "extend": "~3.0.2", + "ibm-cloud-sdk-core": "^5.4.0", "isstream": "~0.1.2", - "object.omit": "~3.0.0", - "object.pick": "~1.3.0", - "request": "~2.83.0", - "solr-client": "^0.7.0", - "vcap_services": "~0.3.0", - "websocket": "~1.0.22" + "websocket": "^1.0.33" }, "engines": { - "node": ">=4" + "node": ">=20.0.0" }, "scripts": { - "test": "npm run lint && mocha test/unit test/integration", - "lint": "npm run compat-check && eslint . --cache && dependency-lint", - "compat-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check", - "autofix": "eslint . --fix", + "tslint:config": "tslint-config-prettier-check ./tslint.json", + "tslint:fix": "tslint --fix -p . -c tslint.json", + "tslint:check": "tslint -p . -c ./tslint.json", + "eslint:config": "eslint --print-config .eslintrc.js | eslint-config-prettier-check", + "eslint:fix": "eslint . --fix", + "eslint:check": "eslint . --cache", + "lint": "npm run eslint:check && npm run tslint:check", + "build": "tsc && cp package.json dist/", "doc": "jsdoc -c scripts/jsdoc/config.json", + "tsc-publish-dry": "tsc-publish --no-checks --dry-run", + "postversion": "npm run tsc-publish-dry", + "test-integration": "jest test/integration", + "test-unit": "jest test/unit/", + "test": "jest test/", + "test-unit-travis": "jest --silent --runInBand test/unit/", + "test-integration-travis": "jest --silent --runInBand --no-colors --testNamePattern='^((?!@slow).)*$' --json test/integration > test-output.log", + "report-coverage": "codecov", "watch-doc": "nodemon --watch ./ --ext js,tmpl,json --ignore dist/ --ignore doc/ --ignore test/ --ignore examples/ --exec npm run doc", - "test-integration": "mocha test/integration", - "test-unit": "npm run lint && mocha test/unit/", - "test-browser": "karma start --single-run", "watch": "npm run test-unit -- --watch", - "browserify": "browserify index.js --standalone Watson --outfile dist/watson.js", - "watchify": "watchify index.js --standalone Watson --outfile dist/watson.js --debug --verbose", - "minify": "uglifyjs --compress --mangle --screw-ie8 dist/watson.js --output dist/watson.min.js --preamble \"// Watson Developer Cloud\n// JavaScript SDK$npm_package_version\n// Generated at `date`\n// Copyright IBM ($npm_package_license)\n// $npm_package_homepage\"", - "build": "npm run browserify && npm run minify" - } + "check-packages": "installed-check -e -d", + "snyk-protect": "snyk protect", + "prettier": "prettier --write \"{src,test}/**/*.js\"" + }, + "jest": { + "collectCoverage": true, + "coverageDirectory": "./coverage/", + "testEnvironment": "node" + }, + "snyk": true } diff --git a/personality-insights/v2.js b/personality-insights/v2.js deleted file mode 100644 index a5af17c7a6..0000000000 --- a/personality-insights/v2.js +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Copyright 2014 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const pick = require('object.pick'); -const helper = require('../lib/helper'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {Object} options - * @constructor - */ -function PersonalityInsightsV2(options) { - BaseService.call(this, options); -} -util.inherits(PersonalityInsightsV2, BaseService); -PersonalityInsightsV2.prototype.name = 'personality_insights'; -PersonalityInsightsV2.prototype.version = 'v2'; -PersonalityInsightsV2.URL = 'https://gateway.watsonplatform.net/personality-insights/api'; - -/** - * @param params {Object} The parameters to call the service - * The accepted parameters are: - * - text: The text to analyze. - * - contentItems: A JSON input (if 'text' not provided). - * - include_raw: include raw results - * - accept_language : The language expected for the output. - * - language: The language of the input. - * - * @param callback The callback. - */ -PersonalityInsightsV2.prototype.profile = function( - params, - callback // eslint-disable-line complexity -) { - params = params || {}; - - // support for the new snake_case - if (params.content_items) { - params.contentItems = params.content_items; - } - - if (!params.text && !params.contentItems) { - callback(new Error('Missing required parameters: text or content_items')); - return; - } - - // Content-Type - let content_type = null; - if (params.text) { - content_type = helper.isHTML(params.text) ? 'text/html' : 'text/plain'; - } else { - content_type = 'application/json'; - } - - const headers = { - 'Content-type': content_type, - 'Accept-language': params.accept_language || params.acceptLanguage || 'en' - }; - - // service bug: language in header overrides language in each JSON content item, so we can't set it on those requests - // (also, content-language doesn't really make sense on JSON) - if (params.language || params.text) { - headers['Content-language'] = params.language || 'en'; - } - - const parameters = { - options: { - method: 'POST', - url: '/v2/profile', - body: params.text || pick(params, ['contentItems']), - json: true, - qs: pick(params, ['include_raw']), - headers: headers - }, - defaultOptions: this._options - }; - - if (params.csv) { - parameters.options.headers.Accept = 'text/csv'; - if (params.csv_headers) { - parameters.options.qs.headers = 'true'; - } - } - - return requestFactory(parameters, callback); -}; -module.exports = PersonalityInsightsV2; diff --git a/personality-insights/v3.js b/personality-insights/v3.js deleted file mode 100644 index 9bf3c9658a..0000000000 --- a/personality-insights/v3.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Copyright 2016 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const requestFactory = require('../lib/requestwrapper'); -const pick = require('object.pick'); -const extend = require('extend'); -const helper = require('../lib/helper'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {Object} options - * @constructor - */ -function PersonalityInsightsV3(options) { - BaseService.call(this, options); - - // Check if 'version_date' was provided - if (typeof this._options.version_date === 'undefined') { - throw new Error('Argument error: version_date was not specified, use 2016-10-19'); - } - this._options.qs.version = options.version_date; -} -util.inherits(PersonalityInsightsV3, BaseService); -PersonalityInsightsV3.prototype.name = 'personality_insights'; -PersonalityInsightsV3.prototype.version = 'v3'; -PersonalityInsightsV3.URL = 'https://gateway.watsonplatform.net/personality-insights/api'; - -/** - * @param {Object} params The parameters to call the service - * @param {Object} [params.headers] - The header parameters. - * @param {string} [params.headers.accept-language=en] - The desired language of the response. - * @param {string} [params.headers.content-type=text/plain] - The content type of the request: text/plain (the default), text/html, or application/json. - * @param {string} [params.headers.content-language=en] - The language of the input text for the request: ar (Arabic), en (English), es (Spanish), or ja (Japanese) - * @param {string} [params.headers.accept=application/json] - The desired content type of the response: application/json (the default) or text/csv - * @param {string} [params.text] - The text to analyze. - * @param {Object} [params.content_items] - A JSON input (if 'text' not provided). - * @param {boolean} [params.raw_scores=false] - include raw results. - * @param {boolean} [params.csv_headers=false] - If true, column labels are returned with a CSV response; if false (the default), they are not. Applies only when the Accept header is set to text/csv. - * @param {boolean} [params.consumption_preferences=false] - If true, information about consumption preferences is returned with the results. - * - * @param callback The callback. - */ -PersonalityInsightsV3.prototype.profile = function( - _params, - callback // eslint-disable-line complexity -) { - const params = extend({}, _params); - - if (params.content_items) { - params.contentItems = params.content_items; - } - - if (!params.text && !params.contentItems) { - callback(new Error('Missing required parameters: text or content_items')); - return; - } - - // Content-Type - let content_type = null; - if (params.text) { - content_type = helper.isHTML(params.text) ? 'text/html' : 'text/plain'; - } else { - content_type = 'application/json'; - } - - const parameters = { - options: { - method: 'POST', - url: '/v3/profile', - body: params.text || pick(params, ['contentItems']), - json: true, - qs: pick(params, ['csv_headers', 'raw_scores', 'consumption_preferences']), - headers: extend({ 'content-type': content_type, 'accept-language': 'en' }, params.headers) - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; -module.exports = PersonalityInsightsV3; diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000000..f45d8f110c --- /dev/null +++ b/renovate.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "config:base" + ] +} diff --git a/retrieve-and-rank/v1.js b/retrieve-and-rank/v1.js deleted file mode 100644 index afd8e4ceae..0000000000 --- a/retrieve-and-rank/v1.js +++ /dev/null @@ -1,632 +0,0 @@ -/** - * Copyright 2015 IBM Corp. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const fs = require('fs'); -const url = require('url'); -const requestFactory = require('../lib/requestwrapper'); -const solr = require('solr-client'); -const helper = require('../lib/helper'); -const pick = require('object.pick'); -const omit = require('object.omit'); -const isStream = require('isstream'); -const util = require('util'); -const BaseService = require('../lib/base_service'); - -/** - * - * @param {Object} options - * @constructor - */ -function RetrieveAndRankV1(options) { - BaseService.call(this, options); -} -util.inherits(RetrieveAndRankV1, BaseService); -RetrieveAndRankV1.prototype.name = 'retrieve_and_rank'; -RetrieveAndRankV1.prototype.version = 'v1'; -RetrieveAndRankV1.URL = 'https://gateway.watsonplatform.net/retrieve-and-rank/api'; - -/** - * Creates a ranker - */ -RetrieveAndRankV1.prototype.createRanker = function(params, callback) { - params = params || {}; - - if (!params || !params.training_data) { - callback(new Error('Missing required parameters: training_data')); - return; - } - if (typeof params.training_data !== 'string' && !isStream(params.training_data)) { - callback(new Error('training_data needs to be a String or Stream')); - return; - } - - const parameters = { - options: { - url: '/v1/rankers', - method: 'POST', - json: true, - formData: { - training_data: params.training_data, - training_metadata: params.training_metadata || JSON.stringify(omit(params, ['training_data'])) - } - }, - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Returns the ranked candidates - * - * @param {Object} params - everything except answer_data and answers will be passed in as answer_metadata - * @param {String|ReadableStream} params.answer_data - * @param {Number} [params.answers] - number of answers to return - * @param {Function} callback - */ -RetrieveAndRankV1.prototype.rank = function(params, callback) { - params = params || {}; - - if (!params || !params.answer_data) { - callback(new Error('Missing required parameters: answer_data')); - return; - } - if (typeof params.answer_data !== 'string' && !isStream(params.answer_data)) { - callback(new Error('answer_data needs to be a String or Stream')); - return; - } - - const topLevelParams = ['answer_data', 'answers']; - const formData = pick(params, topLevelParams); - formData.answer_metadata = JSON.stringify(omit(params, topLevelParams)); - - const parameters = { - options: { - url: '/v1/rankers/{ranker_id}/rank', - method: 'POST', - json: true, - formData: formData, - path: pick(params, ['ranker_id']) - }, - requiredParams: ['ranker_id'], - defaultOptions: this._options - }; - return requestFactory(parameters, callback); -}; - -/** - * Returns the training status of the ranker - */ -RetrieveAndRankV1.prototype.rankerStatus = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/rankers/{ranker_id}', - method: 'GET', - json: true, - path: params - }, - requiredParams: ['ranker_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Retrieves the list of rankers for the user - */ -RetrieveAndRankV1.prototype.listRankers = function(params, callback) { - const parameters = { - options: { - url: '/v1/rankers', - method: 'GET', - json: true - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Deletes a ranker - */ -RetrieveAndRankV1.prototype.deleteRanker = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/rankers/{ranker_id}', - method: 'DELETE', - path: params, - json: true - }, - requiredParams: ['ranker_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -// Solr cluster lifecycle operations - -/** - * Lists all Solr clusters associated with the service instance. - * - * @param params An Object representing the parameters for this service call. - * This request currently does not require any parameters. - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.listClusters = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters', - method: 'GET', - json: true - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Creates a Solr cluster. - * - * @param params An Object representing the parameters for this service call. - * Optional params - * - cluster_name: name to use for identifying the cluster in responses - * - cluster_size: size of the cluster to create - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.createCluster = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters', - method: 'POST', - json: true, - body: params - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Checks whether the specified Solr cluster is ready for use. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to poll - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.pollCluster = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}', - method: 'GET', - path: params, - json: true - }, - requiredParams: ['cluster_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Change the size of the Solr cluster. - - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to poll - * - cluster_size: the integer size to resize the cluster to - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.resizeCluster = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/cluster_size', - method: 'PUT', - body: { cluster_size: params.cluster_size }, - path: params, - json: true - }, - requiredParams: ['cluster_id', 'cluster_size'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Get the status of a resize request. - - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to poll - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.getResizeStatus = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/cluster_size', - method: 'GET', - path: params, - json: true - }, - requiredParams: ['cluster_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Deletes a Solr cluster. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to delete - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.deleteCluster = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}', - method: 'DELETE', - path: params, - json: true - }, - requiredParams: ['cluster_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Get memory and disk usage stats from a Solr cluster - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to get stats from - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.getClusterStats = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/stats', - method: 'GET', - path: params, - json: true - }, - requiredParams: ['cluster_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -// Solr config operations - -/** - * Lists the configuration sets in ZooKeeper. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to get configuration from - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.listConfigs = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/config', - method: 'GET', - path: params, - json: true - }, - requiredParams: ['cluster_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Upload a configuration set to ZooKeeper. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to upload configuration to - * - config_name: the name of the config in ZooKeeper referenced when creating a collection - * - config_zip_path: the ZIP file to upload - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.uploadConfig = function(params, callback) { - params = params || {}; - - if (!params || !params.config_zip_path) { - callback(new Error('Missing required parameters: config_zip_path')); - return; - } - let configFile = null; - if (typeof params.config_zip_path === 'string') { - configFile = fs.createReadStream(params.config_zip_path); - } else if (isStream(params.config_zip_path)) { - configFile = params.config_zip_path; - } else { - callback(new Error('config_zip_path needs to be a String or Stream')); - return; - } - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/config/{config_name}', - method: 'POST', - path: params - }, - requiredParams: ['cluster_id', 'config_name'], - defaultOptions: this._options - }; - - return configFile - .on('response', function(response) { - // Replace content-type - response.headers['content-type'] = 'application/zip'; - }) - .pipe(requestFactory(parameters, callback)); -}; - -/** - * Get a configuration set from ZooKeeper as a .zip file. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to get configuration from - * - config_name: the name of the config in ZooKeeper - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.getConfig = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/config/{config_name}', - method: 'GET', - path: params, - json: true, - headers: { - accept: 'application/zip' - } - }, - requiredParams: ['cluster_id', 'config_name'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Delete a configuration set in ZooKeeper. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to delete configuration from - * - config_name: the name of the config in ZooKeeper - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.deleteConfig = function(params, callback) { - params = params || {}; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/config/{config_name}', - method: 'DELETE', - path: params, - json: true - }, - requiredParams: ['cluster_id', 'config_name'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -// Solr collection operations - -/** - * List all collections for a Solr cluster. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to list collections from - * Optional params: - * - wt: the writer type for the response, defaults to 'json' - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.listCollections = function(params, callback) { - params = params || {}; - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/solr/admin/collections', - method: 'GET', - qs: { - action: 'LIST', - wt: params.wt || 'json' - }, - path: params, - json: true - }, - requiredParams: ['cluster_id'], - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Create a Solr collection. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to create the collection on - * - collection_name: the name of the collection to create - * - config_name: the name of the config in ZooKeeper - * Optional params: - * - wt: the writer type for the response, defaults to 'json' - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.createCollection = function(params, callback) { - params = params || {}; - - const missingParams = helper.getMissingParams(params, ['cluster_id', 'collection_name', 'config_name']); - if (missingParams) { - callback(missingParams); - return; - } - - const queryParams = { - 'collection.configName': params.config_name, - name: params.collection_name, - wt: params.wt || 'json', - action: 'CREATE' - }; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/solr/admin/collections', - method: 'POST', - qs: queryParams, - path: pick(params, ['cluster_id']), - json: true - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Delete a Solr collection. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to delete the collection on - * - collection_name: the name of the collection to delete - * Optional params: - * - wt: the writer type for the response, defaults to 'json' - * - * @param callback The callback. - */ -RetrieveAndRankV1.prototype.deleteCollection = function(params, callback) { - params = params || {}; - - const missingParams = helper.getMissingParams(params, ['cluster_id', 'collection_name']); - if (missingParams) { - callback(missingParams); - return; - } - - const queryParams = { - name: params.collection_name, - wt: params.wt || 'json', - action: 'DELETE' - }; - - const parameters = { - options: { - url: '/v1/solr_clusters/{cluster_id}/solr/admin/collections', - method: 'POST', - qs: queryParams, - path: pick(params, ['cluster_id']), - json: true - }, - defaultOptions: this._options - }; - - return requestFactory(parameters, callback); -}; - -/** - * Get a Solr client for indexing and searching documents. - * See https://github.com/lbdremy/solr-node-client for documentation and examples. - * - * @param params An Object representing the parameters for this service call. - * Required params: - * - cluster_id: the ID of the Solr cluster to delete the collection on - * - collection_name: the name of the collection for indexing/searching - */ -RetrieveAndRankV1.prototype.createSolrClient = function(params) { - params = params || {}; - - const missingParams = helper.getMissingParams(params, ['cluster_id', 'collection_name']); - if (missingParams) { - throw missingParams; - } - - const serviceUrl = url.parse(this._options.url); - const apiPath = serviceUrl.path === '/' ? '' : serviceUrl.path || ''; - - const solrClient = solr.createClient({ - host: serviceUrl.hostname, - path: apiPath + '/v1/solr_clusters/' + params.cluster_id + '/solr', - port: serviceUrl.port || '443', - secure: true, - core: params.collection_name - }); - - if (this._options.username && this._options.password) { - solrClient.basicAuth(this._options.username, this._options.password); - } - return solrClient; -}; - -module.exports = RetrieveAndRankV1; diff --git a/scripts/codemods/transform.js b/scripts/codemods/transform.js index e787ebce64..53eb9c579c 100644 --- a/scripts/codemods/transform.js +++ b/scripts/codemods/transform.js @@ -12,14 +12,12 @@ // 'authorization', // 'language_translator', // 'tone_analyzer', -// 'dialog', // 'retrieve_and_rank', // 'document_conversion', // 'search', // 'alchemy_language', // 'alchemy_vision', // 'alchemy_data_news', -// 'conversation' // ]; // // function isService(fileInfo) { diff --git a/scripts/jsdoc/config.json b/scripts/jsdoc/config.json index 9edd703ece..693d3cad17 100644 --- a/scripts/jsdoc/config.json +++ b/scripts/jsdoc/config.json @@ -10,8 +10,7 @@ "./scripts/", "./node_modules/", "./test/", - "./eslintrc.js", - "./karma.conf.js" + "./eslintrc.js" ] }, "opts": { diff --git a/scripts/jsdoc/generate_index_html.sh b/scripts/jsdoc/generate_index_html.sh index 6665543606..658effd106 100755 --- a/scripts/jsdoc/generate_index_html.sh +++ b/scripts/jsdoc/generate_index_html.sh @@ -24,10 +24,10 @@ echo '

IBM Watson Developer Cloud Node.js SDK

-

Info - | Documentation +

Info + | Documentation | GitHub - | npm + | npm

JSDoc by branch/tag:

diff --git a/scripts/jsdoc/publish.sh b/scripts/jsdoc/publish.sh index 9141b1fc6c..3cf534c536 100755 --- a/scripts/jsdoc/publish.sh +++ b/scripts/jsdoc/publish.sh @@ -17,7 +17,7 @@ if [ "$TRAVIS_REPO_SLUG" == "watson-developer-cloud/node-sdk" ] && [ "$TRAVIS_PU # on tagged builds, $TRAVIS_BRANCH is the tag (e.g. v1.2.3), otherwise it's the branch name (e.g. master) rm -rf $TRAVIS_BRANCH mkdir $TRAVIS_BRANCH - cp -Rf ../doc/watson-developer-cloud/*/* ./$TRAVIS_BRANCH + cp -Rf ../doc/. ./$TRAVIS_BRANCH # update the latest/ symlink # on tagged builds, $TRAVIS_TAG is set to the tag, but it's blank on regular builds, unlike $TRAVIS_BRANCH @@ -42,12 +42,12 @@ if [ "$TRAVIS_REPO_SLUG" == "watson-developer-cloud/node-sdk" ] && [ "$TRAVIS_PU # add all changes to git, including deleted files git add -f -A . - git commit -m "JSDdoc for $TRAVIS_BRANCH ($TRAVIS_COMMIT)" + git commit -m "Doc for $TRAVIS_BRANCH ($TRAVIS_COMMIT)" git push -fq origin gh-pages > /dev/null popd - echo -e "Published JSDoc for $TRAVIS_BRANCH to gh-pages.\n" + echo -e "Published Doc for $TRAVIS_BRANCH to gh-pages.\n" else diff --git a/scripts/jsdoc/publish_gha.sh b/scripts/jsdoc/publish_gha.sh new file mode 100755 index 0000000000..bb986c73bb --- /dev/null +++ b/scripts/jsdoc/publish_gha.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# This is the Github Actions version based on the travis version + +if [ "$GHA_REPO_SLUG" == "watson-developer-cloud/node-sdk" ] && [ "$GHA_PULL_REQUEST" == "" ] && [ "$GHA_BRANCH" ]; then + + echo "Publishing JSDoc..." + + export GHA_BRANCH=${GHA_BRANCH##*/} # Get the last part for true branch name - "refs/heads/9260_gha" + + git config --global user.email "watdevex@us.ibm.com" + git config --global user.name "watdevex" + git clone --quiet --branch=gh-pages https://${GH_TOKEN}@github.com/watson-developer-cloud/node-sdk gh-pages > /dev/null + + pushd gh-pages + # make a directory named after the branch/tag for the current build, replacing the previous one if present + # on tagged builds, $GHA_BRANCH is the tag (e.g. v1.2.3), otherwise it's the branch name (e.g. master) + rm -rf $GHA_BRANCH + mkdir $GHA_BRANCH + cp -Rf ../doc/. ./$GHA_BRANCH + + # update the latest/ symlink + # on tagged builds, $GHA_TAG is set to the tag, but it's blank on regular builds, unlike $GHA_BRANCH + if [ $GHA_TAG ]; then + rm latest + ln -s ./$GHA_TAG latest + fi + + # todo: automatically delete folders that don't have a matching git branch + + echo "tags:" + # sorted list of tags, newest first: + git tag --sort -version:refname + + echo "" + echo "branches:" + # list branches + git branch --remote | grep --invert-match gh-pages | sed -e 's/.*origin\/\(.*\)/\1/' | uniq + + # generate an incdex file listing all of the versions + ../scripts/jsdoc/generate_index_html.sh > index.html + + # add all changes to git, including deleted files + git add -f -A . + git commit -m "Doc for $GHA_BRANCH ($GHA_COMMIT)" + git push -fq origin gh-pages > /dev/null + + popd + + echo -e "Published Doc for $GHA_BRANCH to gh-pages.\n" + +else + + echo -e "Not publishing docs for build $GHA_BUILD_NUMBER ($GHA_JOB_NUMBER) on branch $GHA_BRANCH of repo $GHA_REPO_SLUG" + +fi diff --git a/scripts/report_integration_test.js b/scripts/report_integration_test.js new file mode 100644 index 0000000000..e5ca41d9af --- /dev/null +++ b/scripts/report_integration_test.js @@ -0,0 +1,79 @@ +const fs = require('fs'); +const path = require('path'); +const axios = require('axios'); +const test_output = fs.readFileSync(path.resolve('test-output.log'), { encoding: 'utf8' }); +const test_ouput_json = JSON.parse(test_output); +const ansi_regex = new RegExp( + [ + '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', + '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))', + ].join('|'), + 'g' +); + +const failed_suits = test_ouput_json.testResults.filter(suite => suite.status === 'failed'); + +const errors = { + service: [], + test: [], +}; + +failed_suits.map(suite => { + const failed_tests = suite.assertionResults.filter(test => test.status === 'failed'); + const error_suite = { + name: suite.name.split('node-sdk/test')[1], + service: [], + test: [], + }; + + failed_tests.map(result => { + const message_clean = result.failureMessages.join('\n').replace(ansi_regex, ''); + error_suite[message_clean.indexOf(/^Received: 5/m) > 0 ? 'service' : 'test'].push( + `${result.fullName}\n${message_clean}` + ); + }); + + errors.service.push(`${error_suite.name}\n${error_suite.service.join('\n')}`); + errors.test.push(`${error_suite.name}\n${error_suite.test.join('\n')}`); +}); + +let body = ''; +if (errors.service.length > 0) { + body = `${body}## Service Failures\n${errors.service.join('\n')}\n`; +} + +if (errors.test.length > 0) { + body = `${body}## Possible Test Failures\n${errors.test.join('\n')}\n`; +} + +if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST !== 'false') { + // Send the result to the pull request if it is a pull request. + axios + .post( + `https://api.github.com/repos/${process.env.TRAVIS_REPO_SLUG}/issues/${process.env.TRAVIS_PULL_REQUEST}/comments`, + { + body: body, + }, + { + headers: { + 'User-Agent': 'watson-github-bot', + Authorization: `token ${process.env.GH_TOKEN}`, + }, + } + ) + .catch(error => { + console.error(error); // eslint-disable-line + }) + .then(() => { + if (errors.test.length > 0) { + process.exit(1); // eslint-disable-line + } + }); +} else { + // Write to stdout + console.log(body); // eslint-disable-line + + if (errors.test.length > 0) { + process.exit(1); // eslint-disable-line + } +} diff --git a/scripts/typedoc/generate_typedoc.sh b/scripts/typedoc/generate_typedoc.sh new file mode 100755 index 0000000000..5e7fecbe9a --- /dev/null +++ b/scripts/typedoc/generate_typedoc.sh @@ -0,0 +1,5 @@ +./node_modules/.bin/typedoc --mode file --theme ./scripts/typedoc/theme --excludeExternals --excludePrivate --excludeProtected \ + --out ./doc ./natural-language-understanding/v1.ts \ + ./speech-to-text/v1-generated.ts ./text-to-speech/v1-generated.ts \ + ./lib/recognize-stream.ts ./assistant/v1.ts ./assistant/v2.ts ./discovery/v2.ts --target "ES5" + \ No newline at end of file diff --git a/scripts/typedoc/theme/assets/css/main.css b/scripts/typedoc/theme/assets/css/main.css new file mode 100644 index 0000000000..ea210c7681 --- /dev/null +++ b/scripts/typedoc/theme/assets/css/main.css @@ -0,0 +1,865 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ +/* ========================================================================== HTML5 display definitions ========================================================================== */ +/** Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } + +/** Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. */ +audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } + +/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ +audio:not([controls]) { display: none; height: 0; } + +/** Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. Known issue: no IE 6 support. */ +[hidden] { display: none; } + +/* ========================================================================== Base ========================================================================== */ +/** 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using `em` units. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ +html { font-size: 100%; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ font-family: sans-serif; } + +/** Address `font-family` inconsistency between `textarea` and other form elements. */ +button, input, select, textarea { font-family: sans-serif; } + +/** Address margins handled incorrectly in IE 6/7. */ +body { margin: 0; } + +/* ========================================================================== Links ========================================================================== */ +/** Address `outline` inconsistency between Chrome and other browsers. */ +a:focus { outline: thin dotted; } +a:active, a:hover { outline: 0; } + +/** Improve readability when focused and also mouse hovered in all browsers. */ +/* ========================================================================== Typography ========================================================================== */ +/** Address font sizes and margins set differently in IE 6/7. Address font sizes within `section` and `article` in Firefox 4+, Safari 5, and Chrome. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +h2 { font-size: 1.5em; margin: 0.83em 0; } + +h3 { font-size: 1.17em; margin: 1em 0; } + +h4, .tsd-index-panel h3 { font-size: 1em; margin: 1.33em 0; } + +h5 { font-size: 0.83em; margin: 1.67em 0; } + +h6 { font-size: 0.67em; margin: 2.33em 0; } + +/** Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ +abbr[title] { border-bottom: 1px dotted; } + +/** Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ +b, strong { font-weight: bold; } + +blockquote { margin: 1em 40px; } + +/** Address styling not present in Safari 5 and Chrome. */ +dfn { font-style: italic; } + +/** Address differences between Firefox and other browsers. Known issue: no IE 6/7 normalization. */ +hr { box-sizing: content-box; height: 0; } + +/** Address styling not present in IE 6/7/8/9. */ +mark { background: #ff0; color: #000; } + +/** Address margins set differently in IE 6/7. */ +p, pre { margin: 1em 0; } + +/** Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ +code, kbd, pre, samp { font-family: monospace, serif; _font-family: "courier new", monospace; font-size: 1em; } + +/** Improve readability of pre-formatted text in all browsers. */ +pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } + +/** Address CSS quotes not supported in IE 6/7. */ +q { quotes: none; } +q:before, q:after { content: ""; content: none; } + +/** Address `quotes` property not supported in Safari 4. */ +/** Address inconsistent and variable font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ +sub { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; top: -0.5em; } + +sub { bottom: -0.25em; } + +/* ========================================================================== Lists ========================================================================== */ +/** Address margins set differently in IE 6/7. */ +dl, menu, ol, ul { margin: 1em 0; } + +dd { margin: 0 0 0 40px; } + +/** Address paddings set differently in IE 6/7. */ +menu, ol, ul { padding: 0 0 0 40px; } + +/** Correct list images handled incorrectly in IE 7. */ +nav ul, nav ol { list-style: none; list-style-image: none; } + +/* ========================================================================== Embedded content ========================================================================== */ +/** 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. 2. Improve image quality when scaled in IE 7. */ +img { border: 0; /* 1 */ -ms-interpolation-mode: bicubic; } + +/* 2 */ +/** Correct overflow displayed oddly in IE 9. */ +svg:not(:root) { overflow: hidden; } + +/* ========================================================================== Figures ========================================================================== */ +/** Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ +figure, form { margin: 0; } + +/* ========================================================================== Forms ========================================================================== */ +/** Correct margin displayed oddly in IE 6/7. */ +/** Define consistent border, margin, and padding. */ +fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } + +/** 1. Correct color not being inherited in IE 6/7/8/9. 2. Correct text not wrapping in Firefox 3. 3. Correct alignment displayed oddly in IE 6/7. */ +legend { border: 0; /* 1 */ padding: 0; white-space: normal; /* 2 */ *margin-left: -7px; } + +/* 3 */ +/** 1. Correct font size not being inherited in all browsers. 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, and Chrome. 3. Improve appearance and consistency in all browsers. */ +button, input, select, textarea { font-size: 100%; /* 1 */ margin: 0; /* 2 */ vertical-align: baseline; /* 3 */ *vertical-align: middle; } + +/* 3 */ +/** Address Firefox 3+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ +button, input { line-height: normal; } + +/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. Correct `select` style inheritance in Firefox 4+ and Opera. */ +button, select { text-transform: none; } + +/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. 4. Remove inner spacing in IE 7 without affecting normal text inputs. Known issue: inner spacing remains in IE 6. */ +button, html input[type="button"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ *overflow: visible; } + +/* 4 */ +input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ *overflow: visible; } + +/* 4 */ +/** Re-set default cursor for disabled elements. */ +button[disabled], html input[disabled] { cursor: default; } + +/** 1. Address box sizing set to content-box in IE 8/9. 2. Remove excess padding in IE 8/9. 3. Remove excess padding in IE 7. Known issue: excess padding remains in IE 6. */ +input { /* 3 */ } +input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ *height: 13px; /* 3 */ *width: 13px; } +input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; } +input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */ +/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ +/** Remove inner padding and border in Firefox 3+. */ +button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } + +/** 1. Remove default vertical scrollbar in IE 6/7/8/9. 2. Improve readability and alignment in all browsers. */ +textarea { overflow: auto; /* 1 */ vertical-align: top; } + +/* 2 */ +/* ========================================================================== Tables ========================================================================== */ +/** Remove most spacing between table cells. */ +table { border-collapse: collapse; border-spacing: 0; } + +/* Visual Studio-like style based on original C# coloring by Jason Diamond */ +.hljs { display: inline-block; padding: 0.5em; background: white; color: black; } + +.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket { color: #008000; } + +.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title { color: #00f; } + +.xml .hljs-tag { color: #00f; } +.xml .hljs-tag .hljs-value { color: #00f; } + +.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value { color: #a31515; } + +.ruby .hljs-symbol { color: #a31515; } +.ruby .hljs-symbol .hljs-string { color: #a31515; } + +.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute { color: #a31515; } + +.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt { color: #2b91af; } + +.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag { color: #808080; } + +.vhdl .hljs-typename { font-weight: bold; } +.vhdl .hljs-string { color: #666666; } +.vhdl .hljs-literal { color: #a31515; } +.vhdl .hljs-attribute { color: #00b0e8; } + +.xml .hljs-attribute { color: #f00; } + +.col > :first-child, .col-1 > :first-child, .col-2 > :first-child, .col-3 > :first-child, .col-4 > :first-child, .col-5 > :first-child, .col-6 > :first-child, .col-7 > :first-child, .col-8 > :first-child, .col-9 > :first-child, .col-10 > :first-child, .col-11 > :first-child, .tsd-panel > :first-child, ul.tsd-descriptions > li > :first-child, .col > :first-child > :first-child, .col-1 > :first-child > :first-child, .col-2 > :first-child > :first-child, .col-3 > :first-child > :first-child, .col-4 > :first-child > :first-child, .col-5 > :first-child > :first-child, .col-6 > :first-child > :first-child, .col-7 > :first-child > :first-child, .col-8 > :first-child > :first-child, .col-9 > :first-child > :first-child, .col-10 > :first-child > :first-child, .col-11 > :first-child > :first-child, .tsd-panel > :first-child > :first-child, ul.tsd-descriptions > li > :first-child > :first-child, .col > :first-child > :first-child > :first-child, .col-1 > :first-child > :first-child > :first-child, .col-2 > :first-child > :first-child > :first-child, .col-3 > :first-child > :first-child > :first-child, .col-4 > :first-child > :first-child > :first-child, .col-5 > :first-child > :first-child > :first-child, .col-6 > :first-child > :first-child > :first-child, .col-7 > :first-child > :first-child > :first-child, .col-8 > :first-child > :first-child > :first-child, .col-9 > :first-child > :first-child > :first-child, .col-10 > :first-child > :first-child > :first-child, .col-11 > :first-child > :first-child > :first-child, .tsd-panel > :first-child > :first-child > :first-child, ul.tsd-descriptions > li > :first-child > :first-child > :first-child { margin-top: 0; } +.col > :last-child, .col-1 > :last-child, .col-2 > :last-child, .col-3 > :last-child, .col-4 > :last-child, .col-5 > :last-child, .col-6 > :last-child, .col-7 > :last-child, .col-8 > :last-child, .col-9 > :last-child, .col-10 > :last-child, .col-11 > :last-child, .tsd-panel > :last-child, ul.tsd-descriptions > li > :last-child, .col > :last-child > :last-child, .col-1 > :last-child > :last-child, .col-2 > :last-child > :last-child, .col-3 > :last-child > :last-child, .col-4 > :last-child > :last-child, .col-5 > :last-child > :last-child, .col-6 > :last-child > :last-child, .col-7 > :last-child > :last-child, .col-8 > :last-child > :last-child, .col-9 > :last-child > :last-child, .col-10 > :last-child > :last-child, .col-11 > :last-child > :last-child, .tsd-panel > :last-child > :last-child, ul.tsd-descriptions > li > :last-child > :last-child, .col > :last-child > :last-child > :last-child, .col-1 > :last-child > :last-child > :last-child, .col-2 > :last-child > :last-child > :last-child, .col-3 > :last-child > :last-child > :last-child, .col-4 > :last-child > :last-child > :last-child, .col-5 > :last-child > :last-child > :last-child, .col-6 > :last-child > :last-child > :last-child, .col-7 > :last-child > :last-child > :last-child, .col-8 > :last-child > :last-child > :last-child, .col-9 > :last-child > :last-child > :last-child, .col-10 > :last-child > :last-child > :last-child, .col-11 > :last-child > :last-child > :last-child, .tsd-panel > :last-child > :last-child > :last-child, ul.tsd-descriptions > li > :last-child > :last-child > :last-child { margin-bottom: 0; } + +.container { margin: 0 auto; padding: 0 40px; } +@media (max-width: 640px) { .container { padding: 0 20px; } } + +.container-main { padding-bottom: 200px; } + +.row { position: relative; margin: 0 -10px; } +.row:after { visibility: hidden; display: block; content: ""; clear: both; height: 0; } + +.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11 { box-sizing: border-box; float: left; padding: 0 10px; } + +.col-1 { width: 8.33333%; } + +.offset-1 { margin-left: 8.33333%; } + +.col-2 { width: 16.66667%; } + +.offset-2 { margin-left: 16.66667%; } + +.col-3 { width: 25%; } + +.offset-3 { margin-left: 25%; } + +.col-4 { width: 33.33333%; } + +.offset-4 { margin-left: 33.33333%; } + +.col-5 { width: 41.66667%; } + +.offset-5 { margin-left: 41.66667%; } + +.col-6 { width: 50%; } + +.offset-6 { margin-left: 50%; } + +.col-7 { width: 58.33333%; } + +.offset-7 { margin-left: 58.33333%; } + +.col-8 { width: 66.66667%; } + +.offset-8 { margin-left: 66.66667%; } + +.col-9 { width: 75%; } + +.offset-9 { margin-left: 75%; } + +.col-10 { width: 83.33333%; } + +.offset-10 { margin-left: 83.33333%; } + +.col-11 { width: 91.66667%; } + +.offset-11 { margin-left: 91.66667%; } + +.tsd-kind-icon { display: block; position: relative; padding-left: 20px; text-indent: -20px; } +.tsd-kind-icon:before { content: ''; display: inline-block; vertical-align: middle; width: 17px; height: 17px; margin: 0 3px 2px 0; background-image: url(../images/icons.png); } +@media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { .tsd-kind-icon:before { background-image: url(../images/icons@2x.png); background-size: 238px 204px; } } + +.tsd-signature.tsd-kind-icon:before { background-position: 0 -153px; } + +.tsd-kind-object-literal > .tsd-kind-icon:before { background-position: 0px -17px; } +.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -17px; } +.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -17px; } + +.tsd-kind-class > .tsd-kind-icon:before { background-position: 0px -34px; } +.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -34px; } +.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -34px; } + +.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: 0px -51px; } +.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -51px; } +.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -51px; } + +.tsd-kind-interface > .tsd-kind-icon:before { background-position: 0px -68px; } +.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -68px; } +.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -68px; } + +.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: 0px -85px; } +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -85px; } +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -85px; } + +.tsd-kind-module > .tsd-kind-icon:before { background-position: 0px -102px; } +.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -102px; } +.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -102px; } + +.tsd-kind-external-module > .tsd-kind-icon:before { background-position: 0px -102px; } +.tsd-kind-external-module.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -102px; } +.tsd-kind-external-module.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -102px; } + +.tsd-kind-enum > .tsd-kind-icon:before { background-position: 0px -119px; } +.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -119px; } +.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -119px; } + +.tsd-kind-enum-member > .tsd-kind-icon:before { background-position: 0px -136px; } +.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -136px; } +.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -136px; } + +.tsd-kind-signature > .tsd-kind-icon:before { background-position: 0px -153px; } +.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -153px; } +.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -153px; } + +.tsd-kind-type-alias > .tsd-kind-icon:before { background-position: 0px -170px; } +.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { background-position: -17px -170px; } +.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { background-position: -34px -170px; } + +.tsd-kind-variable > .tsd-kind-icon:before { background-position: -136px -0px; } +.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -0px; } +.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; } +.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -0px; } +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -0px; } +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -0px; } +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -0px; } +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; } +.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -0px; } +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -0px; } +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; } +.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -0px; } +.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -0px; } + +.tsd-kind-property > .tsd-kind-icon:before { background-position: -136px -0px; } +.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -0px; } +.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; } +.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -0px; } +.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -0px; } +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -0px; } +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -0px; } +.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; } +.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -0px; } +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -0px; } +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -0px; } +.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -0px; } +.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -0px; } + +.tsd-kind-get-signature > .tsd-kind-icon:before { background-position: -136px -17px; } +.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -17px; } +.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -17px; } +.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -17px; } + +.tsd-kind-set-signature > .tsd-kind-icon:before { background-position: -136px -34px; } +.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -34px; } +.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -34px; } +.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -34px; } + +.tsd-kind-accessor > .tsd-kind-icon:before { background-position: -136px -51px; } +.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -51px; } +.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -51px; } +.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -51px; } +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -51px; } +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -51px; } +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -51px; } +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -51px; } +.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -51px; } +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -51px; } +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -51px; } +.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -51px; } +.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -51px; } + +.tsd-kind-function > .tsd-kind-icon:before { background-position: -136px -68px; } +.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -68px; } +.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -68px; } +.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -68px; } +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -68px; } +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -68px; } +.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -68px; } +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -68px; } +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -68px; } +.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -68px; } + +.tsd-kind-method > .tsd-kind-icon:before { background-position: -136px -68px; } +.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -68px; } +.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -68px; } +.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -68px; } +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -68px; } +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -68px; } +.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -68px; } +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -68px; } +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -68px; } +.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -68px; } + +.tsd-kind-call-signature > .tsd-kind-icon:before { background-position: -136px -68px; } +.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -68px; } +.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -68px; } +.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -68px; } + +.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: -136px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -85px; } +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -85px; } + +.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { background-position: -136px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -85px; } +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -85px; } + +.tsd-kind-constructor > .tsd-kind-icon:before { background-position: -136px -102px; } +.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -102px; } +.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; } +.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -102px; } +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -102px; } +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -102px; } +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -102px; } +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; } +.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -102px; } +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -102px; } +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; } +.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -102px; } +.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -102px; } + +.tsd-kind-constructor-signature > .tsd-kind-icon:before { background-position: -136px -102px; } +.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -102px; } +.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -102px; } +.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -102px; } + +.tsd-kind-index-signature > .tsd-kind-icon:before { background-position: -136px -119px; } +.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -119px; } +.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -119px; } +.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -119px; } + +.tsd-kind-event > .tsd-kind-icon:before { background-position: -136px -136px; } +.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -136px; } +.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -136px; } +.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -136px; } +.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -136px; } +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -136px; } +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -136px; } +.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -136px; } +.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -136px; } +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -136px; } +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -136px; } +.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -136px; } +.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -136px; } + +.tsd-is-static > .tsd-kind-icon:before { background-position: -136px -153px; } +.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -153px; } +.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -153px; } +.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -153px; } +.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -153px; } +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -153px; } +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -153px; } +.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -153px; } +.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -153px; } +.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -153px; } +.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -153px; } +.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -153px; } +.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -153px; } + +.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { background-position: -136px -170px; } +.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -170px; } +.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -170px; } +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { background-position: -136px -170px; } +.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -170px; } +.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -170px; } +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { background-position: -136px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -170px; } +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -170px; } + +.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { background-position: -136px -187px; } +.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { background-position: -153px -187px; } +.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { background-position: -51px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { background-position: -68px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { background-position: -85px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { background-position: -102px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { background-position: -170px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { background-position: -187px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { background-position: -119px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { background-position: -204px -187px; } +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { background-position: -221px -187px; } + +.no-transition { transition: none !important; } + +@-webkit-keyframes fade-in { from { opacity: 0; } + to { opacity: 1; } } + +@keyframes fade-in { from { opacity: 0; } + to { opacity: 1; } } +@-webkit-keyframes fade-out { from { opacity: 1; visibility: visible; } + to { opacity: 0; } } +@keyframes fade-out { from { opacity: 1; visibility: visible; } + to { opacity: 0; } } +@-webkit-keyframes fade-in-delayed { 0% { opacity: 0; } + 33% { opacity: 0; } + 100% { opacity: 1; } } +@keyframes fade-in-delayed { 0% { opacity: 0; } + 33% { opacity: 0; } + 100% { opacity: 1; } } +@-webkit-keyframes fade-out-delayed { 0% { opacity: 1; visibility: visible; } + 66% { opacity: 0; } + 100% { opacity: 0; } } +@keyframes fade-out-delayed { 0% { opacity: 1; visibility: visible; } + 66% { opacity: 0; } + 100% { opacity: 0; } } +@-webkit-keyframes shift-to-left { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); } + to { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); } } +@keyframes shift-to-left { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); } + to { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); } } +@-webkit-keyframes unshift-to-left { from { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); } + to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } } +@keyframes unshift-to-left { from { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); } + to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } } +@-webkit-keyframes pop-in-from-right { from { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); } + to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } } +@keyframes pop-in-from-right { from { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); } + to { -webkit-transform: translate(0, 0); transform: translate(0, 0); } } +@-webkit-keyframes pop-out-to-right { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; } + to { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); } } +@keyframes pop-out-to-right { from { -webkit-transform: translate(0, 0); transform: translate(0, 0); visibility: visible; } + to { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); } } +body { background: #fdfdfd; font-family: "Segoe UI", sans-serif; font-size: 16px; color: #222; } + +a { color: #4da6ff; text-decoration: none; } +a:hover { text-decoration: underline; } + +code, pre { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; padding: 0.2em; margin: 0; font-size: 14px; background-color: rgba(0, 0, 0, 0.04); } + +pre { padding: 10px; } +pre code { padding: 0; font-size: 100%; background-color: transparent; } + +.tsd-typography { line-height: 1.333em; } +.tsd-typography ul { list-style: square; padding: 0 0 0 20px; margin: 0; } +.tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { font-size: 1em; margin: 0; } +.tsd-typography h5, .tsd-typography h6 { font-weight: normal; } +.tsd-typography p, .tsd-typography ul, .tsd-typography ol { margin: 1em 0; } + +@media (min-width: 901px) and (max-width: 1024px) { html.default .col-content { width: 72%; } + html.default .col-menu { width: 28%; } + html.default .tsd-navigation { padding-left: 10px; } } +@media (max-width: 900px) { html.default .col-content { float: none; width: 100%; } + html.default .col-menu { position: fixed !important; overflow: auto; -webkit-overflow-scrolling: touch; overflow-scrolling: touch; z-index: 1024; top: 0 !important; bottom: 0 !important; left: auto !important; right: 0 !important; width: 100%; padding: 20px 20px 0 0; max-width: 450px; visibility: hidden; background-color: #fff; -webkit-transform: translate(100%, 0); transform: translate(100%, 0); } + html.default .col-menu > *:last-child { padding-bottom: 20px; } + html.default .overlay { content: ""; display: block; position: fixed; z-index: 1023; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.75); visibility: hidden; } + html.default.to-has-menu .overlay { -webkit-animation: fade-in 0.4s; animation: fade-in 0.4s; } + html.default.to-has-menu header, html.default.to-has-menu footer, html.default.to-has-menu .col-content { -webkit-animation: shift-to-left 0.4s; animation: shift-to-left 0.4s; } + html.default.to-has-menu .col-menu { -webkit-animation: pop-in-from-right 0.4s; animation: pop-in-from-right 0.4s; } + html.default.from-has-menu .overlay { -webkit-animation: fade-out 0.4s; animation: fade-out 0.4s; } + html.default.from-has-menu header, html.default.from-has-menu footer, html.default.from-has-menu .col-content { -webkit-animation: unshift-to-left 0.4s; animation: unshift-to-left 0.4s; } + html.default.from-has-menu .col-menu { -webkit-animation: pop-out-to-right 0.4s; animation: pop-out-to-right 0.4s; } + html.default.has-menu body { overflow: hidden; } + html.default.has-menu .overlay { visibility: visible; } + html.default.has-menu header, html.default.has-menu footer, html.default.has-menu .col-content { -webkit-transform: translate(-25%, 0); transform: translate(-25%, 0); } + html.default.has-menu .col-menu { visibility: visible; -webkit-transform: translate(0, 0); transform: translate(0, 0); } } + +.tsd-page-title { padding: 70px 0 20px 0; margin: 0 0 40px 0; background: #fff; box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); } +.tsd-page-title h1 { margin: 0; } + +.tsd-breadcrumb { margin: 0; padding: 0; color: #808080; } +.tsd-breadcrumb a { color: #808080; text-decoration: none; } +.tsd-breadcrumb a:hover { text-decoration: underline; } +.tsd-breadcrumb li { display: inline; } +.tsd-breadcrumb li:after { content: " / "; } + +html.minimal .container { margin: 0; } +html.minimal .container-main { padding-top: 50px; padding-bottom: 0; } +html.minimal .content-wrap { padding-left: 300px; } +html.minimal .tsd-navigation { position: fixed !important; overflow: auto; -webkit-overflow-scrolling: touch; overflow-scrolling: touch; box-sizing: border-box; z-index: 1; left: 0; top: 40px; bottom: 0; width: 300px; padding: 20px; margin: 0; } +html.minimal .tsd-member .tsd-member { margin-left: 0; } +html.minimal .tsd-page-toolbar { position: fixed; z-index: 2; } +html.minimal #tsd-filter .tsd-filter-group { right: 0; -webkit-transform: none; transform: none; } +html.minimal footer { background-color: transparent; } +html.minimal footer .container { padding: 0; } +html.minimal .tsd-generator { padding: 0; } +@media (max-width: 900px) { html.minimal .tsd-navigation { display: none; } + html.minimal .content-wrap { padding-left: 0; } } + +dl.tsd-comment-tags { overflow: hidden; } +dl.tsd-comment-tags dt { clear: both; float: left; padding: 1px 5px; margin: 0 10px 0 0; border-radius: 4px; border: 1px solid #808080; color: #808080; font-size: 0.8em; font-weight: normal; } +dl.tsd-comment-tags dd { margin: 0 0 10px 0; } +dl.tsd-comment-tags p { margin: 0; } + +.tsd-panel.tsd-comment .lead { font-size: 1.1em; line-height: 1.333em; margin-bottom: 2em; } +.tsd-panel.tsd-comment .lead:last-child { margin-bottom: 0; } + +.toggle-protected .tsd-is-private { display: none; } + +.toggle-public .tsd-is-private, .toggle-public .tsd-is-protected, .toggle-public .tsd-is-private-protected { display: none; } + +.toggle-inherited .tsd-is-inherited { display: none; } + +.toggle-only-exported .tsd-is-not-exported { display: none; } + +.toggle-externals .tsd-is-external { display: none; } + +#tsd-filter { position: relative; display: inline-block; height: 40px; vertical-align: bottom; } +.no-filter #tsd-filter { display: none; } +#tsd-filter .tsd-filter-group { display: inline-block; height: 40px; vertical-align: bottom; white-space: nowrap; } +#tsd-filter input { display: none; } +@media (max-width: 900px) { #tsd-filter .tsd-filter-group { display: block; position: absolute; top: 40px; right: 20px; height: auto; background-color: #fff; visibility: hidden; -webkit-transform: translate(50%, 0); transform: translate(50%, 0); box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } + .has-options #tsd-filter .tsd-filter-group { visibility: visible; } + .to-has-options #tsd-filter .tsd-filter-group { -webkit-animation: fade-in 0.2s; animation: fade-in 0.2s; } + .from-has-options #tsd-filter .tsd-filter-group { -webkit-animation: fade-out 0.2s; animation: fade-out 0.2s; } + #tsd-filter label, #tsd-filter .tsd-select { display: block; padding-right: 20px; } } + +footer { border-top: 1px solid #eee; background-color: #fff; } +footer.with-border-bottom { border-bottom: 1px solid #eee; } +footer .tsd-legend-group { font-size: 0; } +footer .tsd-legend { display: inline-block; width: 25%; padding: 0; font-size: 16px; list-style: none; line-height: 1.333em; vertical-align: top; } +@media (max-width: 900px) { footer .tsd-legend { width: 50%; } } + +.tsd-hierarchy { list-style: square; padding: 0 0 0 20px; margin: 0; } +.tsd-hierarchy .target { font-weight: bold; } + +.tsd-index-panel .tsd-index-content { margin-bottom: -30px !important; } +.tsd-index-panel .tsd-index-section { margin-bottom: 30px !important; } +.tsd-index-panel h3 { margin: 0 -20px 10px -20px; padding: 0 20px 10px 20px; border-bottom: 1px solid #eee; } +.tsd-index-panel ul.tsd-index-list { -webkit-column-count: 3; -moz-column-count: 3; -ms-column-count: 3; -o-column-count: 3; column-count: 3; -webkit-column-gap: 20px; -moz-column-gap: 20px; -ms-column-gap: 20px; -o-column-gap: 20px; column-gap: 20px; padding: 0; list-style: none; line-height: 1.333em; } +@media (max-width: 900px) { .tsd-index-panel ul.tsd-index-list { -webkit-column-count: 1; -moz-column-count: 1; -ms-column-count: 1; -o-column-count: 1; column-count: 1; } } +@media (min-width: 901px) and (max-width: 1024px) { .tsd-index-panel ul.tsd-index-list { -webkit-column-count: 2; -moz-column-count: 2; -ms-column-count: 2; -o-column-count: 2; column-count: 2; } } +.tsd-index-panel ul.tsd-index-list li { -webkit-column-break-inside: avoid; -moz-column-break-inside: avoid; -ms-column-break-inside: avoid; -o-column-break-inside: avoid; column-break-inside: avoid; -webkit-page-break-inside: avoid; -moz-page-break-inside: avoid; -ms-page-break-inside: avoid; -o-page-break-inside: avoid; page-break-inside: avoid; } +.tsd-index-panel a, .tsd-index-panel .tsd-parent-kind-module a { color: #9600ff; } +.tsd-index-panel .tsd-parent-kind-interface a { color: #7da01f; } +.tsd-index-panel .tsd-parent-kind-enum a { color: #cc9900; } +.tsd-index-panel .tsd-parent-kind-class a { color: #4da6ff; } +.tsd-index-panel .tsd-kind-module a { color: #9600ff; } +.tsd-index-panel .tsd-kind-interface a { color: #7da01f; } +.tsd-index-panel .tsd-kind-enum a { color: #cc9900; } +.tsd-index-panel .tsd-kind-class a { color: #4da6ff; } +.tsd-index-panel .tsd-is-private a { color: #808080; } + +.tsd-flag { display: inline-block; padding: 1px 5px; border-radius: 4px; color: #fff; background-color: #808080; text-indent: 0; font-size: 14px; font-weight: normal; } + +.tsd-anchor { position: absolute; top: -100px; } + +.tsd-member { position: relative; } +.tsd-member .tsd-anchor + h3 { margin-top: 0; margin-bottom: 0; border-bottom: none; } + +.tsd-navigation { padding: 0 0 0 40px; } +.tsd-navigation a { display: block; padding-top: 2px; padding-bottom: 2px; border-left: 2px solid transparent; color: #222; text-decoration: none; transition: border-left-color 0.1s; } +.tsd-navigation a:hover { text-decoration: underline; } +.tsd-navigation ul { margin: 0; padding: 0; list-style: none; } +.tsd-navigation li { padding: 0; } + +.tsd-navigation.primary { padding-bottom: 40px; } +.tsd-navigation.primary a { display: block; padding-top: 6px; padding-bottom: 6px; } +.tsd-navigation.primary ul li a { padding-left: 5px; } +.tsd-navigation.primary ul li li a { padding-left: 25px; } +.tsd-navigation.primary ul li li li a { padding-left: 45px; } +.tsd-navigation.primary ul li li li li a { padding-left: 65px; } +.tsd-navigation.primary ul li li li li li a { padding-left: 85px; } +.tsd-navigation.primary ul li li li li li li a { padding-left: 105px; } +.tsd-navigation.primary > ul { border-bottom: 1px solid #eee; } +.tsd-navigation.primary li { border-top: 1px solid #eee; } +.tsd-navigation.primary li.current > a { font-weight: bold; } +.tsd-navigation.primary li.label span { display: block; padding: 20px 0 6px 5px; color: #808080; } +.tsd-navigation.primary li.globals + li > span, .tsd-navigation.primary li.globals + li > a { padding-top: 20px; } + +.tsd-navigation.secondary ul { transition: opacity 0.2s; } +.tsd-navigation.secondary ul li a { padding-left: 25px; } +.tsd-navigation.secondary ul li li a { padding-left: 45px; } +.tsd-navigation.secondary ul li li li a { padding-left: 65px; } +.tsd-navigation.secondary ul li li li li a { padding-left: 85px; } +.tsd-navigation.secondary ul li li li li li a { padding-left: 105px; } +.tsd-navigation.secondary ul li li li li li li a { padding-left: 125px; } +.tsd-navigation.secondary ul.current a { border-left-color: #eee; } +.tsd-navigation.secondary li.focus > a, .tsd-navigation.secondary ul.current li.focus > a { border-left-color: #000; } +.tsd-navigation.secondary li.current { margin-top: 20px; margin-bottom: 20px; border-left-color: #eee; } +.tsd-navigation.secondary li.current > a { font-weight: bold; } + +@media (min-width: 901px) { .menu-sticky-wrap { position: static; } + .no-csspositionsticky .menu-sticky-wrap.sticky { position: fixed; } + .no-csspositionsticky .menu-sticky-wrap.sticky-current { position: fixed; } + .no-csspositionsticky .menu-sticky-wrap.sticky-current ul.before-current, .no-csspositionsticky .menu-sticky-wrap.sticky-current ul.after-current { opacity: 0; } + .no-csspositionsticky .menu-sticky-wrap.sticky-bottom { position: absolute; top: auto !important; left: auto !important; bottom: 0; right: 0; } + .csspositionsticky .menu-sticky-wrap.sticky { position: -webkit-sticky; position: sticky; } + .csspositionsticky .menu-sticky-wrap.sticky-current { position: -webkit-sticky; position: sticky; } } + +.tsd-panel { margin: 20px 0; padding: 20px; background-color: #fff; box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } +.tsd-panel:empty { display: none; } +.tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { margin: 1.5em -20px 10px -20px; padding: 0 20px 10px 20px; border-bottom: 1px solid #eee; } +.tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { margin-bottom: 0; border-bottom: 0; } +.tsd-panel table { display: block; width: 100%; overflow: auto; margin-top: 10px; word-break: normal; word-break: keep-all; } +.tsd-panel table th { font-weight: bold; } +.tsd-panel table th, .tsd-panel table td { padding: 6px 13px; border: 1px solid #ddd; } +.tsd-panel table tr { background-color: #fff; border-top: 1px solid #ccc; } +.tsd-panel table tr:nth-child(2n) { background-color: #f8f8f8; } + +.tsd-panel-group { margin: 60px 0; } +.tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { padding-left: 20px; padding-right: 20px; } + +#tsd-search { transition: background-color 0.2s; } +#tsd-search .title { position: relative; z-index: 2; } +#tsd-search .field { position: absolute; left: 0; top: 0; right: 40px; height: 40px; } +#tsd-search .field input { box-sizing: border-box; position: relative; top: -50px; z-index: 1; width: 100%; padding: 0 10px; opacity: 0; outline: 0; border: 0; background: transparent; color: #222; } +#tsd-search .field label { position: absolute; overflow: hidden; right: -40px; } +#tsd-search .field input, #tsd-search .title { transition: opacity 0.2s; } +#tsd-search .results { position: absolute; visibility: hidden; top: 40px; width: 100%; margin: 0; padding: 0; list-style: none; box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } +#tsd-search .results li { padding: 0 10px; background-color: #fdfdfd; } +#tsd-search .results li:nth-child(even) { background-color: #fff; } +#tsd-search .results li.state { display: none; } +#tsd-search .results li.current, #tsd-search .results li:hover { background-color: #eee; } +#tsd-search .results a { display: block; } +#tsd-search .results a:before { top: 10px; } +#tsd-search .results span.parent { color: #808080; font-weight: normal; } +#tsd-search.has-focus { background-color: #eee; } +#tsd-search.has-focus .field input { top: 0; opacity: 1; } +#tsd-search.has-focus .title { z-index: 0; opacity: 0; } +#tsd-search.has-focus .results { visibility: visible; } +#tsd-search.loading .results li.state.loading { display: block; } +#tsd-search.failure .results li.state.failure { display: block; } + +.tsd-signature { margin: 0 0 1em 0; padding: 10px; border: 1px solid #eee; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; } +.tsd-signature.tsd-kind-icon { padding-left: 30px; } +.tsd-signature.tsd-kind-icon:before { top: 10px; left: 10px; } +.tsd-panel > .tsd-signature { margin-left: -20px; margin-right: -20px; border-width: 1px 0; } +.tsd-panel > .tsd-signature.tsd-kind-icon { padding-left: 40px; } +.tsd-panel > .tsd-signature.tsd-kind-icon:before { left: 20px; } + +.tsd-signature-symbol { color: #808080; font-weight: normal; } + +.tsd-signature-type { font-style: italic; font-weight: normal; } + +.tsd-signatures { padding: 0; margin: 0 0 1em 0; border: 1px solid #eee; } +.tsd-signatures .tsd-signature { margin: 0; border-width: 1px 0 0 0; transition: background-color 0.1s; } +.tsd-signatures .tsd-signature:first-child { border-top-width: 0; } +.tsd-signatures .tsd-signature.current { background-color: #eee; } +.tsd-signatures.active > .tsd-signature { cursor: pointer; } +.tsd-panel > .tsd-signatures { margin-left: -20px; margin-right: -20px; border-width: 1px 0; } +.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { padding-left: 40px; } +.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { left: 20px; } +.tsd-panel > a.anchor + .tsd-signatures { border-top-width: 0; margin-top: -20px; } + +ul.tsd-descriptions { position: relative; overflow: hidden; transition: height 0.3s; padding: 0; list-style: none; } +ul.tsd-descriptions.active > .tsd-description { display: none; } +ul.tsd-descriptions.active > .tsd-description.current { display: block; } +ul.tsd-descriptions.active > .tsd-description.fade-in { -webkit-animation: fade-in-delayed 0.3s; animation: fade-in-delayed 0.3s; } +ul.tsd-descriptions.active > .tsd-description.fade-out { -webkit-animation: fade-out-delayed 0.3s; animation: fade-out-delayed 0.3s; position: absolute; display: block; top: 0; left: 0; right: 0; opacity: 0; visibility: hidden; } +ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { font-size: 16px; margin: 1em 0 0.5em 0; } + +ul.tsd-parameters, ul.tsd-type-parameters { list-style: square; margin: 0; padding-left: 20px; } +ul.tsd-parameters > li.tsd-parameter-siganture, ul.tsd-type-parameters > li.tsd-parameter-siganture { list-style: none; margin-left: -20px; } +ul.tsd-parameters h5, ul.tsd-type-parameters h5 { font-size: 16px; margin: 1em 0 0.5em 0; } +ul.tsd-parameters .tsd-comment, ul.tsd-type-parameters .tsd-comment { margin-top: -0.5em; } + +.tsd-sources { font-size: 14px; color: #808080; margin: 0 0 1em 0; } +.tsd-sources a { color: #808080; text-decoration: underline; } +.tsd-sources ul, .tsd-sources p { margin: 0 !important; } +.tsd-sources ul { list-style: none; padding: 0; } + +.tsd-page-toolbar { position: absolute; z-index: 1; top: 0; left: 0; width: 100%; height: 40px; color: #333; background: #fff; border-bottom: 1px solid #eee; } +.tsd-page-toolbar a { color: #333; text-decoration: none; } +.tsd-page-toolbar a.title { font-weight: bold; } +.tsd-page-toolbar a.title:hover { text-decoration: underline; } +.tsd-page-toolbar .table-wrap { display: table; width: 100%; height: 40px; } +.tsd-page-toolbar .table-cell { display: table-cell; position: relative; white-space: nowrap; line-height: 40px; } +.tsd-page-toolbar .table-cell:first-child { width: 100%; } + +.tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { content: ""; display: inline-block; width: 40px; height: 40px; margin: 0 -8px 0 0; background-image: url(../images/widgets.png); background-repeat: no-repeat; text-indent: -1024px; vertical-align: bottom; } +@media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { .tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { background-image: url(../images/widgets@2x.png); background-size: 320px 40px; } } + +.tsd-widget { display: inline-block; overflow: hidden; opacity: 0.6; height: 40px; transition: opacity 0.1s, background-color 0.2s; vertical-align: bottom; cursor: pointer; } +.tsd-widget:hover { opacity: 0.8; } +.tsd-widget.active { opacity: 1; background-color: #eee; } +.tsd-widget.no-caption { width: 40px; } +.tsd-widget.no-caption:before { margin: 0; } +.tsd-widget.search:before { background-position: 0 0; } +.tsd-widget.menu:before { background-position: -40px 0; } +.tsd-widget.options:before { background-position: -80px 0; } +.tsd-widget.options, .tsd-widget.menu { display: none; } +@media (max-width: 900px) { .tsd-widget.options, .tsd-widget.menu { display: inline-block; } } +input[type=checkbox] + .tsd-widget:before { background-position: -120px 0; } +input[type=checkbox]:checked + .tsd-widget:before { background-position: -160px 0; } + +.tsd-select { position: relative; display: inline-block; height: 40px; transition: opacity 0.1s, background-color 0.2s; vertical-align: bottom; cursor: pointer; } +.tsd-select .tsd-select-label { opacity: 0.6; transition: opacity 0.2s; } +.tsd-select .tsd-select-label:before { background-position: -240px 0; } +.tsd-select.active .tsd-select-label { opacity: 0.8; } +.tsd-select.active .tsd-select-list { visibility: visible; opacity: 1; transition-delay: 0s; } +.tsd-select .tsd-select-list { position: absolute; visibility: hidden; top: 40px; left: 0; margin: 0; padding: 0; opacity: 0; list-style: none; box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); transition: visibility 0s 0.2s, opacity 0.2s; } +.tsd-select .tsd-select-list li { padding: 0 20px 0 0; background-color: #fdfdfd; } +.tsd-select .tsd-select-list li:before { background-position: 40px 0; } +.tsd-select .tsd-select-list li:nth-child(even) { background-color: #fff; } +.tsd-select .tsd-select-list li:hover { background-color: #eee; } +.tsd-select .tsd-select-list li.selected:before { background-position: -200px 0; } +@media (max-width: 900px) { .tsd-select .tsd-select-list { top: 0; left: auto; right: 100%; margin-right: -5px; } + .tsd-select .tsd-select-label:before { background-position: -280px 0; } } + +img { max-width: 100%; } diff --git a/scripts/typedoc/theme/assets/css/main.css.map b/scripts/typedoc/theme/assets/css/main.css.map new file mode 100644 index 0000000000..bc17fe48b3 --- /dev/null +++ b/scripts/typedoc/theme/assets/css/main.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";;;AASA,gGAAgG,GAC5F,OAAO,EAAE,KAAK;;;AAKlB,oBAAoB,GAChB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC;;;AAMZ,qBAAqB,GACjB,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,CAAC;;;AAMb,QAAQ,GACJ,OAAO,EAAE,IAAI;;;;AAYjB,IAAI,GACA,SAAS,EAAE,IAAI,UAEf,oBAAoB,EAAE,IAAI,UAE1B,wBAAwB,EAAE,IAAI,UAE9B,WAAW,EAAE,UAAU;;;AAM3B,+BAA+B,GAC3B,WAAW,EAAE,UAAU;;;AAK3B,IAAI,GACA,MAAM,EAAE,CAAC;;;;AAUT,OAAO,GACH,OAAO,EAAE,WAAW;AACxB,iBAAiB,GACb,OAAO,EAAE,CAAC;;;;;AAclB,EAAE,GACE,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,QAAQ;;AAEpB,EAAE,GACE,SAAS,EAAE,KAAK,EAChB,MAAM,EAAE,QAAQ;;AAEpB,EAAE,GACE,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,KAAK;;AAEjB,uBAAE,GACE,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,QAAQ;;AAEpB,EAAE,GACE,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ;;AAEpB,EAAE,GACE,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ;;;AAKpB,WAAW,GACP,aAAa,EAAE,UAAU;;;AAK7B,SAAS,GACL,WAAW,EAAE,IAAI;;AAErB,UAAU,GACN,MAAM,EAAE,QAAQ;;;AAKpB,GAAG,GACC,UAAU,EAAE,MAAM;;;AAMtB,EAAE,GACE,eAAe,EAAE,WAAW,EAC5B,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,CAAC;;;AAKb,IAAI,GACA,UAAU,EAAE,IAAI,EAChB,KAAK,EAAE,IAAI;;;AAKf,MAAM,GACF,MAAM,EAAE,KAAK;;;AAKjB,oBAAoB,GAChB,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,wBAAwB,EACtC,SAAS,EAAE,GAAG;;;AAKlB,GAAG,GACC,WAAW,EAAE,GAAG,EAChB,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAE,UAAU;;;AAKzB,CAAC,GACG,MAAM,EAAE,IAAI;AACZ,iBAAiB,GACb,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,IAAI;;;;AAQrB,KAAK,GACD,SAAS,EAAE,GAAG;;;AAKlB,GAAG,GACC,SAAS,EAAE,GAAG,EACd,WAAW,EAAE,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,QAAQ;;AAE5B,GAAG,GACC,SAAS,EAAE,GAAG,EACd,WAAW,EAAE,CAAC,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,QAAQ,EACxB,GAAG,EAAE,MAAM;;AAEf,GAAG,GACC,MAAM,EAAE,OAAO;;;;AASnB,gBAAgB,GACZ,MAAM,EAAE,KAAK;;AAEjB,EAAE,GACE,MAAM,EAAE,UAAU;;;AAKtB,YAAY,GACR,OAAO,EAAE,UAAU;;;AAMnB,cAAM,GACF,UAAU,EAAE,IAAI,EAChB,gBAAgB,EAAE,IAAI;;;;AAU9B,GAAG,GACC,MAAM,EAAE,CAAC,UAET,sBAAsB,EAAE,OAAO;;;;AAMnC,cAAc,GACV,QAAQ,EAAE,MAAM;;;;AASpB,YAAY,GACR,MAAM,EAAE,CAAC;;;;;AAYb,QAAQ,GACJ,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,KAAK,EACb,OAAO,EAAE,qBAAqB;;;AAOlC,MAAM,GACF,MAAM,EAAE,CAAC,UAET,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,MAAM,UAEnB,YAAY,EAAE,IAAI;;;;AAStB,+BAA+B,GAC3B,SAAS,EAAE,IAAI,UAEf,MAAM,EAAE,CAAC,UAET,cAAc,EAAE,QAAQ,UAExB,eAAe,EAAE,MAAM;;;;AAO3B,aAAa,GACT,WAAW,EAAE,MAAM;;;AAQvB,cAAc,GACV,cAAc,EAAE,IAAI;;;AAWxB,iCAAiC,GAC7B,kBAAkB,EAAE,MAAM,UAE1B,MAAM,EAAE,OAAO,UAEf,SAAS,EAAE,OAAO;;;AAIlB,yCAAiC,GAC7B,kBAAkB,EAAE,MAAM,UAE1B,MAAM,EAAE,OAAO,UAEf,SAAS,EAAE,OAAO;;;;AAM1B,sCAAsC,GAClC,MAAM,EAAE,OAAO;;;AAQnB,KAAK;AACD,2CAAmC,GAC/B,UAAU,EAAE,UAAU,UAEtB,OAAO,EAAE,CAAC,UAEV,OAAO,EAAE,IAAI,UAEb,MAAM,EAAE,IAAI;AAEhB,oBAAgB,GACZ,kBAAkB,EAAE,SAAS,UAE7B,eAAe,EAAE,WAAW,EAC5B,kBAAkB,EAAE,WAAW,UAE/B,UAAU,EAAE,WAAW;AACvB,mGAA6D,GACzD,kBAAkB,EAAE,IAAI;;;;;AAcpC,iDAAiD,GAC7C,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC;;;AAMd,QAAQ,GACJ,QAAQ,EAAE,IAAI,UAEd,cAAc,EAAE,GAAG;;;;;AAUvB,KAAK,GACD,eAAe,EAAE,QAAQ,EACzB,cAAc,EAAE,CAAC;;;ACnarB,KAAK,GACD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,KAAK,EACjB,KAAK,EAAE,KAAK;;AAEhB,gHAAgH,GAC5G,KAAK,EAAE,OAAO;;AAElB,+KAA+K,GAC3K,KAAK,EAAE,IAAI;;AAEf,cAAc,GACV,KAAK,EAAE,IAAI;AACX,0BAAW,GACP,KAAK,EAAE,IAAI;;AAEnB,uFAAuF,GACnF,KAAK,EAAE,OAAO;;AAElB,kBAAkB,GACd,KAAK,EAAE,OAAO;AACd,+BAAY,GACR,KAAK,EAAE,OAAO;;AAEtB,sKAAsK,GAClK,KAAK,EAAE,OAAO;;AAElB,sUAAsU,GAClU,KAAK,EAAE,OAAO;;AAElB,4CAA4C,GACxC,KAAK,EAAE,OAAO;;AAGd,oBAAc,GACV,WAAW,EAAE,IAAI;AACrB,kBAAY,GACR,KAAK,EAAE,OAAO;AAClB,mBAAa,GACT,KAAK,EAAE,OAAO;AAClB,qBAAe,GACX,KAAK,EAAE,OAAO;;AAEtB,oBAAoB,GAChB,KAAK,EAAE,IAAI;;AC5BX,4nDAAe,GAGX,UAAU,EAAE,CAAC;AAEjB,wiDAAc,GAGV,aAAa,EAAE,CAAC;;ACCxB,UAAU,GACN,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;AAhCf,yBAAyB,GACrB,UAAC,GAkCD,OAAO,EAAE,MAAM;;AAEvB,eAAe,GACX,cAAc,EAAE,KAAK;;AAEzB,IAAI,GAEA,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,OAAO;ADpCf,UAAO,GACH,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,EAAE,EACX,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,CAAC;;ACiCjB,8FAAI,GAEA,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,MAAM;;AAGf,MAAc,GAEV,KAAK,EAAE,QAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,QAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,SAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,SAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,GAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,GAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,SAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,SAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,SAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,SAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,GAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,GAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,SAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,SAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,SAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,SAAkB;;AALnC,MAAc,GAEV,KAAK,EAAE,GAAkB;;AAE7B,SAAiB,GACb,WAAW,EAAE,GAAkB;;AALnC,OAAc,GAEV,KAAK,EAAE,SAAkB;;AAE7B,UAAiB,GACb,WAAW,EAAE,SAAkB;;AALnC,OAAc,GAEV,KAAK,EAAE,SAAkB;;AAE7B,UAAiB,GACb,WAAW,EAAE,SAAkB;;AC5BvC,cAAe,GACX,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,IAAI,EAClB,WAAW,EAAE,KAAK;AAElB,qBAAS,GACL,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,YAAY,EACrB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,wBAAwB;AF3B9C,qGAAqG,GACjG,qBAAC,GE6BG,gBAAgB,EAAE,2BAA2B,EAC7C,eAAe,EAAE,WAAW;;AAKxC,mCAAoC,GAChC,mBAAmB,EAAE,QAAQ;;AA0BrB,gDAAwB,GACpB,mBAAmB,EAAE,SAAa;AAGtC,iEAA2C,GACvC,mBAAmB,EAAE,WAAuB;AAGhD,+DAAyC,GACrC,mBAAmB,EAAE,WAAqB;;AAT9C,uCAAwB,GACpB,mBAAmB,EAAE,SAAa;AAGtC,wDAA2C,GACvC,mBAAmB,EAAE,WAAuB;AAGhD,sDAAyC,GACrC,mBAAmB,EAAE,WAAqB;;AAT9C,8DAAwB,GACpB,mBAAmB,EAAE,SAAa;AAGtC,+EAA2C,GACvC,mBAAmB,EAAE,WAAuB;AAGhD,6EAAyC,GACrC,mBAAmB,EAAE,WAAqB;;AAT9C,2CAAwB,GACpB,mBAAmB,EAAE,SAAa;AAGtC,4DAA2C,GACvC,mBAAmB,EAAE,WAAuB;AAGhD,0DAAyC,GACrC,mBAAmB,EAAE,WAAqB;;AAT9C,kEAAwB,GACpB,mBAAmB,EAAE,SAAa;AAGtC,mFAA2C,GACvC,mBAAmB,EAAE,WAAuB;AAGhD,iFAAyC,GACrC,mBAAmB,EAAE,WAAqB;;AAT9C,wCAAwB,GACpB,mBAAmB,EAAE,UAAa;AAGtC,yDAA2C,GACvC,mBAAmB,EAAE,YAAuB;AAGhD,uDAAyC,GACrC,mBAAmB,EAAE,YAAqB;;AAT9C,iDAAwB,GACpB,mBAAmB,EAAE,UAAa;AAGtC,kEAA2C,GACvC,mBAAmB,EAAE,YAAuB;AAGhD,gEAAyC,GACrC,mBAAmB,EAAE,YAAqB;;AAT9C,sCAAwB,GACpB,mBAAmB,EAAE,UAAa;AAGtC,uDAA2C,GACvC,mBAAmB,EAAE,YAAuB;AAGhD,qDAAyC,GACrC,mBAAmB,EAAE,YAAqB;;AAT9C,6CAAwB,GACpB,mBAAmB,EAAE,UAAa;AAGtC,8DAA2C,GACvC,mBAAmB,EAAE,YAAuB;AAGhD,4DAAyC,GACrC,mBAAmB,EAAE,YAAqB;;AAT9C,2CAAwB,GACpB,mBAAmB,EAAE,UAAa;AAGtC,4DAA2C,GACvC,mBAAmB,EAAE,YAAuB;AAGhD,0DAAyC,GACrC,mBAAmB,EAAE,YAAqB;;AAT9C,4CAAwB,GACpB,mBAAmB,EAAE,UAAa;AAGtC,6DAA2C,GACvC,mBAAmB,EAAE,YAAuB;AAGhD,2DAAyC,GACrC,mBAAmB,EAAE,YAAqB;;AAiB9C,0CAAwB,GACpB,mBAAmB,EAAE,WAAe;AAGxC,2DAA2C,GACvC,mBAAmB,EAAE,WAAyB;AAGlD,yDAAyC,GACrC,mBAAmB,EAAE,WAAuB;AAI5C,gEAAwB,GACpB,mBAAmB,EAAE,UAA4B;AAGrD,iFAA2C,GACvC,mBAAmB,EAAE,UAAsC;AAG/D,iFAA2C,GACvC,mBAAmB,EAAE,UAA+B;AAGxD,kGAA4D,GACxD,mBAAmB,EAAE,WAAyC;AAGlE,+EAAyC,GACrC,mBAAmB,EAAE,WAAuB;AAKhD,+DAAwB,GACpB,mBAAmB,EAAE,WAAoB;AAG7C,gFAA2C,GACvC,mBAAmB,EAAE,WAA8B;AAGvD,8EAAyC,GACrC,mBAAmB,EAAE,WAAuB;AAKhD,oEAAwB,GACpB,mBAAmB,EAAE,WAAyB;AAGlD,qFAA2C,GACvC,mBAAmB,EAAE,WAAmC;;AAtDhE,0CAAwB,GACpB,mBAAmB,EAAE,WAAe;AAGxC,2DAA2C,GACvC,mBAAmB,EAAE,WAAyB;AAGlD,yDAAyC,GACrC,mBAAmB,EAAE,WAAuB;AAI5C,gEAAwB,GACpB,mBAAmB,EAAE,UAA4B;AAGrD,iFAA2C,GACvC,mBAAmB,EAAE,UAAsC;AAG/D,iFAA2C,GACvC,mBAAmB,EAAE,UAA+B;AAGxD,kGAA4D,GACxD,mBAAmB,EAAE,WAAyC;AAGlE,+EAAyC,GACrC,mBAAmB,EAAE,WAAuB;AAKhD,+DAAwB,GACpB,mBAAmB,EAAE,WAAoB;AAG7C,gFAA2C,GACvC,mBAAmB,EAAE,WAA8B;AAGvD,8EAAyC,GACrC,mBAAmB,EAAE,WAAuB;AAKhD,oEAAwB,GACpB,mBAAmB,EAAE,WAAyB;AAGlD,qFAA2C,GACvC,mBAAmB,EAAE,WAAmC;;AAtDhE,+CAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,gEAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,8DAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,qEAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,sFAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,sFAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,uGAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,oFAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,oEAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,qFAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,mFAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,yEAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,0FAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,+CAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,gEAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,8DAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,qEAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,sFAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,sFAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,uGAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,oFAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,oEAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,qFAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,mFAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,yEAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,0FAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,0CAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,2DAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,yDAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,gEAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,iFAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,iFAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,kGAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,+EAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,+DAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,gFAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,8EAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,oEAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,qFAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,0CAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,2DAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,yDAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,gEAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,iFAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,iFAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,kGAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,+EAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,+DAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,gFAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,8EAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,oEAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,qFAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,wCAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,yDAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,uDAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,8DAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,+EAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,+EAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,gGAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,6EAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,6DAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,8EAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,4EAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,kEAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,mFAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,gDAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,iEAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,+DAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,sEAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,uFAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,uFAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,wGAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,qFAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,qEAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,sFAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,oFAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,0EAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,2FAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,iEAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,kFAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,gFAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,uFAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,wGAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,wGAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,yHAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,sGAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,sFAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,uGAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,qGAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,2FAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,4GAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,+DAAwB,GACpB,mBAAmB,EAAE,YAAe;AAGxC,gFAA2C,GACvC,mBAAmB,EAAE,YAAyB;AAGlD,8EAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAI5C,qFAAwB,GACpB,mBAAmB,EAAE,WAA4B;AAGrD,sGAA2C,GACvC,mBAAmB,EAAE,WAAsC;AAG/D,sGAA2C,GACvC,mBAAmB,EAAE,WAA+B;AAGxD,uHAA4D,GACxD,mBAAmB,EAAE,YAAyC;AAGlE,oGAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,oFAAwB,GACpB,mBAAmB,EAAE,YAAoB;AAG7C,qGAA2C,GACvC,mBAAmB,EAAE,YAA8B;AAGvD,mGAAyC,GACrC,mBAAmB,EAAE,YAAuB;AAKhD,yFAAwB,GACpB,mBAAmB,EAAE,YAAyB;AAGlD,0GAA2C,GACvC,mBAAmB,EAAE,YAAmC;;AAtDhE,6CAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,8DAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,4DAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,mEAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,oFAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,oFAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,qGAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,kFAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,kEAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,mFAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,iFAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,uEAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,wFAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,uDAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,wEAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,sEAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,6EAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,8FAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,8FAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,+GAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,4FAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,4EAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,6FAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,2FAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,iFAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,kGAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,iDAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,kEAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,gEAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,uEAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,wFAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,wFAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,yGAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,sFAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,sEAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,uFAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,qFAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,2EAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,4FAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,uCAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,wDAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,sDAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,6DAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,8EAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,8EAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,+FAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,4EAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,4DAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,6EAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,2EAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,iEAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,kFAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,sCAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,uDAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,qDAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,4DAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,6EAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,6EAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,8FAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,2EAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,2DAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,4EAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,0EAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,gEAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,iFAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,wDAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,yEAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,uEAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,8EAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,+FAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,+FAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,gHAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,6FAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,6EAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,8FAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,4FAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,kFAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,mGAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,sDAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,uEAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,qEAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,4EAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,6FAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,6FAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,8GAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,2FAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,2EAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,4FAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,0FAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,gFAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,iGAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,8DAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,+EAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,6EAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,oFAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,qGAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,qGAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,sHAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,mGAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,mFAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,oGAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,kGAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,wFAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,yGAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AAtDhE,qDAAwB,GACpB,mBAAmB,EAAE,aAAe;AAGxC,sEAA2C,GACvC,mBAAmB,EAAE,aAAyB;AAGlD,oEAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAI5C,2EAAwB,GACpB,mBAAmB,EAAE,YAA4B;AAGrD,4FAA2C,GACvC,mBAAmB,EAAE,YAAsC;AAG/D,4FAA2C,GACvC,mBAAmB,EAAE,YAA+B;AAGxD,6GAA4D,GACxD,mBAAmB,EAAE,aAAyC;AAGlE,0FAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,0EAAwB,GACpB,mBAAmB,EAAE,aAAoB;AAG7C,2FAA2C,GACvC,mBAAmB,EAAE,aAA8B;AAGvD,yFAAyC,GACrC,mBAAmB,EAAE,aAAuB;AAKhD,+EAAwB,GACpB,mBAAmB,EAAE,aAAyB;AAGlD,gGAA2C,GACvC,mBAAmB,EAAE,aAAmC;;AC/J5E,cAAc,GACV,UAAU,EAAE,eAAe;;4BAIvB,OAAO,EAAE,CAAC;OAEV,OAAO,EAAE,CAAC;6BAIV,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,OAAO;OAEnB,OAAO,EAAE,CAAC;kCAIV,OAAO,EAAE,CAAC;QAEV,OAAO,EAAE,CAAC;SAEV,OAAO,EAAE,CAAC;mCAIV,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,OAAO;QAEnB,OAAO,EAAE,CAAC;SAEV,OAAO,EAAE,CAAC;kCAIV,SAAS,EAAE,eAAc;OAEzB,SAAS,EAAE,kBAAiB;oCAI5B,SAAS,EAAE,kBAAiB;OAE5B,SAAS,EAAE,eAAc;sCAIzB,SAAS,EAAE,kBAAiB;OAE5B,SAAS,EAAE,eAAc;qCAIzB,SAAS,EAAE,eAAc,EACzB,UAAU,EAAE,OAAO;OAEnB,SAAS,EAAE,kBAAiB;ACxDpC,IAAI,GACA,UAAU,ECYK,OAAO,EDXtB,WAAW,ECAD,sBAAsB,EDChC,SAAS,ECED,IAAI,EDDZ,KAAK,ECUI,IAAI;;ADRjB,CAAC,GACG,KAAK,ECSI,OAAO,EDRhB,eAAe,EAAE,IAAI;AAErB,OAAO,GACH,eAAe,EAAE,SAAS;;AAElC,SAAS,GACL,WAAW,ECXI,iDAAiD,EDYhE,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,CAAC,EACT,SAAS,ECXI,IAAI,EDYjB,gBAAgB,ECUI,mBAAgB;;ADRxC,GAAG,GACC,OAAO,EAAE,IAAI;AAEb,QAAI,GACA,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,IAAI,EACf,gBAAgB,EAAE,WAAW;;AAErC,eAAe,GACX,WAAW,ECrBD,OAAO;ADuBjB,kBAAE,GACE,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,CAAC;AAEb,oIAAU,GACN,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,CAAC;AAEb,sCAAM,GACF,WAAW,EAAE,MAAM;AAEvB,yDAAS,GACL,MAAM,EAAE,KAAK;;AHjCjB,iDAAiD,GKT7C,yBAAY,GACR,KAAK,EAAE,GAAG;EAEd,sBAAS,GACL,KAAK,EAAE,GAAG;EAEd,4BAAe,GACX,YAAY,EAAE,IAAI;ALY1B,yBAAyB,GKTrB,yBAAY,GACR,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,IAAI;EAEf,sBAAS,GACL,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,IAAI,EACd,0BAA0B,EAAE,KAAK,EACjC,kBAAkB,EAAE,KAAK,EACzB,OAAO,EAAE,IAAI,EACb,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EDRd,IAAI,ECSN,SAAS,EAAE,kBAAiB;EAE5B,qCAAc,GACV,cAAc,EAAE,IAAI;EAE5B,qBAAQ,GACJ,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,IAAI,EACb,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,mBAAgB,EAClC,UAAU,EAAE,MAAM;EAGlB,iCAAQ,GACJ,SAAS,EAAE,YAAY;EAE3B,uGAAO,GAGH,SAAS,EAAE,kBAAkB;EAEjC,kCAAS,GACL,SAAS,EAAE,sBAAsB;EAGrC,mCAAQ,GACJ,SAAS,EAAE,aAAa;EAE5B,6GAAO,GAGH,SAAS,EAAE,oBAAoB;EAEnC,oCAAS,GACL,SAAS,EAAE,qBAAqB;EAGpC,0BAAI,GACA,QAAQ,EAAE,MAAM;EAEpB,8BAAQ,GACJ,UAAU,EAAE,OAAO;EAEvB,8FAAO,GAGH,SAAS,EAAE,kBAAkB;EAEjC,+BAAS,GACL,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,eAAc;;AAEzC,eAAe,GACX,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,UAAU,EAClB,UAAU,EDrEA,IAAI,ECsEd,UAAU,EAAE,2BAAwB;AAEpC,kBAAE,GACE,MAAM,EAAE,CAAC;;AAEjB,eAAe,GACX,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,KAAK,EDrFU,OAAO;ACuFtB,iBAAC,GACG,KAAK,EDxFM,OAAO,ECyFlB,eAAe,EAAE,IAAI;AAErB,uBAAO,GACH,eAAe,EAAE,SAAS;AAElC,kBAAE,GACE,OAAO,EAAE,MAAM;AAEf,wBAAO,GACH,OAAO,EAAE,KAAK;;AChHtB,uBAAU,GACN,MAAM,EAAE,CAAC;AAEb,4BAAe,GACX,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,CAAC;AAErB,0BAAa,GACT,YAAY,EAAE,KAAK;AAEvB,4BAAe,GACX,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,IAAI,EACd,0BAA0B,EAAE,KAAK,EACjC,kBAAkB,EAAE,KAAK,EACzB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,CAAC;AAEb,oCAAuB,GACnB,WAAW,EAAE,CAAC;AAElB,8BAAiB,GACb,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,CAAC;AAEd,0CAA6B,GACzB,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,IAAI;AAEnB,mBAAM,GACF,gBAAgB,EAAE,WAAW;AAE7B,8BAAU,GACN,OAAO,EAAE,CAAC;AAElB,2BAAc,GACV,OAAO,EAAE,CAAC;ANtBd,yBAAyB,GMyBrB,4BAAe,GACX,OAAO,EAAE,IAAI;EACjB,0BAAa,GACT,YAAY,EAAE,CAAC;;ACtC3B,mBAAmB,GACf,QAAQ,EAAE,MAAM;AAEhB,sBAAE,GACE,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,iBAA4B,EACpC,KAAK,EHIO,OAAO,EGHnB,SAAS,EAAE,KAAK,EAChB,WAAW,EAAE,MAAM;AAEvB,sBAAE,GACE,MAAM,EAAE,UAAU;AAEtB,qBAAC,GACG,MAAM,EAAE,CAAC;;AAYjB,4BAA4B,GACxB,SAAS,EAAE,KAAK,EAChB,WAAW,EHnCD,OAAO,EGoCjB,aAAa,EAAE,GAAG;AAElB,uCAAY,GACR,aAAa,EAAE,CAAC;;AC7CxB,iCAAiC,GAC7B,OAAO,EAAE,IAAI;;AAEjB,0GAA+B,GAG3B,OAAO,EAAE,IAAI;;AAEjB,mCAAmC,GAC/B,OAAO,EAAE,IAAI;;AAEjB,0CAA0C,GACtC,OAAO,EAAE,IAAI;;AAEjB,kCAAkC,GAC9B,OAAO,EAAE,IAAI;;AAKjB,WAAW,GACP,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,MAAM,EJaO,IAAI,EIZjB,cAAc,EAAE,MAAM;AAEtB,sBAAY,GACR,OAAO,EAAE,IAAI;AAEjB,6BAAiB,GACb,OAAO,EAAE,YAAY,EACrB,MAAM,EJKG,IAAI,EIJb,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM;AAEvB,iBAAK,GACD,OAAO,EAAE,IAAI;ARjBjB,yBAAyB,GQoBrB,6BAAiB,GACb,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,EJNE,IAAI,EIOT,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,gBAAgB,EJzBd,IAAI,EI0BN,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAgB,EAC3B,UAAU,EAAE,2BAAwB;EAEpC,0CAAc,GACV,UAAU,EAAE,OAAO;EAEvB,6CAAiB,GACb,SAAS,EAAE,YAAY;EAE3B,+CAAmB,GACf,SAAS,EAAE,aAAa;EAEhC,0CAAM,GAEF,OAAO,EAAE,KAAK,EACd,aAAa,EAAE,IAAI;;AChE/B,MAAM,GACF,UAAU,EAAE,cAA8B,EAC1C,gBAAgB,ELoBN,IAAI;AKlBd,yBAAoB,GAChB,aAAa,EAAE,cAA8B;AAEjD,wBAAiB,GACb,SAAS,EAAE,CAAC;AAEhB,kBAAW,GACP,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,CAAC,EACV,SAAS,ELTL,IAAI,EKUR,UAAU,EAAE,IAAI,EAChB,WAAW,ELRL,OAAO,EKSb,cAAc,EAAE,GAAG;ATIvB,yBAAyB,GACrB,kBAAC,GSFG,KAAK,EAAE,GAAG;;ACHtB,cAAc,GACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,CAAC;AAET,sBAAO,GACH,WAAW,EAAE,IAAI;;ACArB,mCAAkB,GACd,aAAa,EAAE,gBAAgB;AAEnC,mCAAkB,GACd,aAAa,EAAE,eAAe;AAElC,mBAAE,GAEE,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,cAA8B;AAEjD,kCAAiB,GZlCjB,oBAAoB,EAAE,CAAM,EAC5B,iBAAiB,EAAE,CAAM,EACzB,gBAAgB,EAAE,CAAM,EACxB,eAAe,EAAE,CAAM,EACvB,YAAY,EAAE,CAAM,EAJpB,kBAAoB,EAAE,IAAM,EAC5B,eAAiB,EAAE,IAAM,EACzB,cAAgB,EAAE,IAAM,EACxB,aAAe,EAAE,IAAM,EACvB,UAAY,EAAE,IAAM,EYiChB,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,IAAI,EAChB,WAAW,EPhCL,OAAO;AJajB,yBAAyB,GACrB,kCAAC,GDrBL,oBAAoB,EAAE,CAAM,EAC5B,iBAAiB,EAAE,CAAM,EACzB,gBAAgB,EAAE,CAAM,EACxB,eAAe,EAAE,CAAM,EACvB,YAAY,EAAE,CAAM;ACMpB,iDAAiD,GAC7C,kCAAC,GDXL,oBAAoB,EAAE,CAAM,EAC5B,iBAAiB,EAAE,CAAM,EACzB,gBAAgB,EAAE,CAAM,EACxB,eAAe,EAAE,CAAM,EACvB,YAAY,EAAE,CAAM;AY2ChB,qCAAE,GZ/CN,2BAAoB,EAAE,KAAM,EAC5B,wBAAiB,EAAE,KAAM,EACzB,uBAAgB,EAAE,KAAM,EACxB,sBAAe,EAAE,KAAM,EACvB,mBAAY,EAAE,KAAM,EAJpB,yBAAoB,EAAE,KAAM,EAC5B,sBAAiB,EAAE,KAAM,EACzB,qBAAgB,EAAE,KAAM,EACxB,oBAAe,EAAE,KAAM,EACvB,iBAAY,EAAE,KAAM;AY+CpB,8DAAE,GAEE,KAAK,EPxBF,OAAO;AO0Bd,6CAA4B,GACxB,KAAK,EP1BQ,OAAO;AO4BxB,wCAAuB,GACnB,KAAK,EP5BG,OAAO;AO8BnB,yCAAwB,GACpB,KAAK,EP9BI,OAAO;AOiCpB,mCAAkB,GACd,KAAK,EPrCF,OAAO;AOuCd,sCAAqB,GACjB,KAAK,EPvCQ,OAAO;AOyCxB,iCAAgB,GACZ,KAAK,EPzCG,OAAO;AO2CnB,kCAAiB,GACb,KAAK,EP3CI,OAAO;AO6CpB,kCAAiB,GACb,KAAK,EP7CM,OAAO;;AQlC1B,SAAS,GACL,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,GAAG,EAClB,KAAK,ERsBgB,IAAI,EQrBzB,gBAAgB,ERoBA,OAAO,EQnBvB,WAAW,EAAE,CAAC,EACd,SAAS,ERDI,IAAI,EQEjB,WAAW,EAAE,MAAM;;AAEvB,WAAW,GACP,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM;;AAEf,WAAW,GACP,QAAQ,EAAE,QAAQ;AAElB,4BAAgB,GACZ,UAAU,EAAE,CAAC,EACb,aAAa,EAAE,CAAC,EAChB,aAAa,EAAE,IAAI;;ACN3B,eAAe,GACX,OAAO,EAAE,UAAU;AAEnB,iBAAC,GACG,OAAO,EAAE,KAAK,EACd,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,GAAG,EACnB,WAAW,EAAE,qBAAqB,EAClC,KAAK,ETRA,IAAI,ESST,eAAe,EAAE,IAAI,EACrB,UAAU,EAAE,sBAAsB;AAElC,uBAAO,GACH,eAAe,EAAE,SAAS;AAElC,kBAAE,GACE,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,IAAI;AAEpB,kBAAE,GACE,OAAO,EAAE,CAAC;;AAmBlB,uBAAuB,GACnB,cAAc,EAAE,IAAI;AAEpB,yBAAC,GACG,OAAO,EAAE,KAAK,EACd,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,GAAG;AArDnB,+BAAG,GACC,YAAY,EAAE,GAAmC;AADrD,kCAAG,GACC,YAAY,EAAE,IAAmC;AADrD,qCAAG,GACC,YAAY,EAAE,IAAmC;AADrD,wCAAG,GACC,YAAY,EAAE,IAAmC;AADrD,2CAAG,GACC,YAAY,EAAE,IAAmC;AADrD,8CAAG,GACC,YAAY,EAAE,KAAmC;AAyDzD,4BAAI,GACA,aAAa,EAAE,cAA8B;AAEjD,0BAAE,GACE,UAAU,EAAE,cAA8B;AAE1C,sCAAa,GACT,WAAW,EAAE,IAAI;AAErB,qCAAY,GACR,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,cAAc,EACvB,KAAK,ETzDE,OAAO;AS2DlB,2FAAsB,GAElB,WAAW,EAAE,IAAI;;AA+BzB,4BAAE,GAEE,UAAU,EAAE,YAAY;AA3GxB,iCAAG,GACC,YAAY,EAAE,IAAmC;AADrD,oCAAG,GACC,YAAY,EAAE,IAAmC;AADrD,uCAAG,GACC,YAAY,EAAE,IAAmC;AADrD,0CAAG,GACC,YAAY,EAAE,IAAmC;AADrD,6CAAG,GACC,YAAY,EAAE,KAAmC;AADrD,gDAAG,GACC,YAAY,EAAE,KAAmC;AA4GrD,sCAAW,GACP,iBAAiB,ET9FP,IAAI;ASgGtB,yFAAa,GAET,iBAAiB,ETtGE,IAAI;ASwG3B,oCAAU,GACN,UAAU,EAAE,IAAI,EAChB,aAAa,EAAE,IAAI,EACnB,iBAAiB,ETvGH,IAAI;ASyGlB,wCAAG,GACC,WAAW,EAAE,IAAI;;AbvGzB,yBAAyB,GACrB,iBAAC,Ga6GD,QAAQ,EAAE,MAAM;EAGZ,8CAAQ,GACJ,QAAQ,EAAE,KAAK;EAEnB,sDAAgB,GACZ,QAAQ,EAAE,KAAK;EAEf,iJAAkB,GAEd,OAAO,EAAE,CAAC;EAElB,qDAAe,GACX,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,CAAC;EAGZ,2CAAQ,GACJ,QAAQ,EAAE,MAAM;EAEpB,mDAAgB,GACZ,QAAQ,EAAE,MAAM;;ACzJhC,UAAU,GAEN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,EACb,gBAAgB,EVUN,IAAI,EUTd,UAAU,EAAE,2BAAwB;AAEpC,gBAAO,GACH,OAAO,EAAE,IAAI;AAEjB,iDAAgB,GACZ,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,cAA8B;AAE7C,gHAAsB,GAClB,aAAa,EAAE,CAAC,EAChB,aAAa,EAAE,CAAC;AAExB,gBAAK,GACD,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,QAAQ;AAEpB,mBAAE,GACE,WAAW,EAAE,IAAI;AAErB,wCAAM,GACF,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,cAAc;AAE1B,mBAAE,GACE,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,cAAc;AAE1B,iCAAe,GACX,gBAAgB,EAAE,OAAO;;AAiBzC,gBAAgB,GACZ,MAAM,EAAE,MAAM;AAEd,mEAAgB,GACZ,YAAY,EAAE,IAAI,EAClB,aAAa,EAAE,IAAI;;ACrE3B,WAAW,GACP,UAAU,EAAE,qBAAqB;AAEjC,kBAAM,GACF,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC;AAEd,kBAAM,GACF,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI;AAEZ,wBAAK,GACD,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,WAAW,EACvB,KAAK,EXXJ,IAAI;AWaT,wBAAK,GACD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK;AAEpB,4CAAa,GAET,UAAU,EAAE,YAAY;AAE5B,oBAAQ,GACJ,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,2BAAwB;AAEpC,uBAAE,GACE,OAAO,EAAE,MAAM,EACf,gBAAgB,EXnCT,OAAO;AWqClB,uCAAkB,GACd,gBAAgB,EX7Bd,IAAI;AW+BV,6BAAQ,GACJ,OAAO,EAAE,IAAI;AAEjB,8DAAW,GAEP,gBAAgB,EXnCN,IAAI;AWqClB,sBAAC,GACG,OAAO,EAAE,KAAK;AAEd,6BAAQ,GACJ,GAAG,EAAE,IAAI;AAEjB,gCAAW,GACP,KAAK,EXpDE,OAAO,EWqDd,WAAW,EAAE,MAAM;AAE3B,qBAAW,GACP,gBAAgB,EXhDF,IAAI;AWkDlB,kCAAY,GACR,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,CAAC;AAEd,4BAAM,GACF,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,CAAC;AAEd,8BAAQ,GACJ,UAAU,EAAE,OAAO;AAE3B,6CAAmC,GAC/B,OAAO,EAAE,KAAK;AAElB,6CAAmC,GAC/B,OAAO,EAAE,KAAK;;AC3EtB,cAAc,GACV,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,cAA8B,EACtC,WAAW,EZdI,iDAAiD,EYehE,SAAS,EZZI,IAAI;AYcjB,4BAAe,GACX,YAAY,EAAE,IAAI;AAElB,mCAAQ,GACJ,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,IAAI;AAElB,2BAAc,GACV,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,KAAK,EACnB,YAAY,EAAE,KAAK;AAEnB,yCAAe,GACX,YAAY,EAAE,IAAI;AAElB,gDAAQ,GACJ,IAAI,EAAE,IAAI;;AAE1B,qBAAqB,GACjB,KAAK,EZxBU,OAAO,EYyBtB,WAAW,EAAE,MAAM;;AAEvB,mBAAmB,GACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM;;AAYvB,eAAe,GACX,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAA8B;AAEtC,8BAAc,GACV,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,SAAS,EACvB,UAAU,EAAE,qBAAqB;AAEjC,0CAAa,GACT,gBAAgB,EAAE,CAAC;AAEvB,sCAAS,GACL,gBAAgB,EZ/CN,IAAI;AYiDtB,uCAAyB,GACrB,MAAM,EAAE,OAAO;AAEnB,4BAAc,GACV,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,KAAK,EACnB,YAAY,EAAE,KAAK;AAEnB,yDAA4B,GACxB,YAAY,EAAE,IAAI;AAElB,gEAAQ,GACJ,IAAI,EAAE,IAAI;AAEtB,uCAAyB,GACrB,gBAAgB,EAAE,CAAC,EACnB,UAAU,EAAE,KAAK;;AAezB,mBAAmB,GACf,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,IAAI;AAKhB,6CAA2B,GACvB,OAAO,EAAE,IAAI;AAEb,qDAAS,GACL,OAAO,EAAE,KAAK;AAElB,qDAAS,GACL,SAAS,EAAE,oBAAoB;AAEnC,sDAAU,GACN,SAAS,EAAE,qBAAqB,EAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,KAAK,EACd,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,MAAM;AAE1B,wGAAE,GACE,SAAS,EZhIL,IAAI,EYiIR,MAAM,EAAE,aAAa;;AAE7B,yCAAkB,GAEd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,IAAI;AAElB,mGAA4B,GACxB,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,KAAK;AAEtB,+CAAE,GACE,SAAS,EZ9IL,IAAI,EY+IR,MAAM,EAAE,aAAa;AAEzB,mEAAY,GACR,UAAU,EAAE,MAAM;;AC9I1B,YAAY,GACR,SAAS,EbJI,IAAI,EaKjB,KAAK,EbIU,OAAO,EaHtB,MAAM,EAAE,SAAS;AAEjB,cAAC,GACG,KAAK,EbAM,OAAO,EaClB,eAAe,EAAE,SAAS;AAE9B,+BAAK,GACD,MAAM,EAAE,YAAY;AAExB,eAAE,GACE,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,CAAC;;ACXlB,iBAAiB,GACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,EACV,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,IAAI,EACX,MAAM,EdoBO,IAAI,EcnBjB,KAAK,EdkBY,IAAI,EcjBrB,UAAU,EdgBE,IAAI,EcfhB,aAAa,EAAE,cAA8B;AAE7C,mBAAC,GACG,KAAK,EdaQ,IAAI,EcZjB,eAAe,EAAE,IAAI;AAErB,yBAAO,GACH,WAAW,EAAE,IAAI;AAErB,+BAAa,GACT,eAAe,EAAE,SAAS;AAElC,6BAAW,GACP,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,IAAI,EACX,MAAM,EdEG,IAAI;AcAjB,6BAAW,GACP,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EdJF,IAAI;AcMb,yCAAa,GACT,KAAK,EAAE,IAAI;;AAGnB,gGAAQ,GACJ,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,UAAU,EAClB,gBAAgB,EAAE,0BAA0B,EAC5C,iBAAiB,EAAE,SAAS,EAC5B,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,MAAM;AnBzC1B,qGAAqG,GACjG,gGAAC,GmB2CG,gBAAgB,EAAE,6BAA6B,EAC/C,eAAe,EAAE,UAAU;;AAEvC,WAAW,GAEP,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,EACZ,MAAM,Ed9BO,IAAI,Ec+BjB,UAAU,EAAE,mCAAmC,EAC/C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,OAAO;AAEf,iBAAO,GACH,OAAO,EAAE,GAAG;AAEhB,kBAAQ,GACJ,OAAO,EAAE,CAAC,EACV,gBAAgB,EdvDF,IAAI;AcyDtB,sBAAY,GACR,KAAK,EAAE,IAAI;AAEX,6BAAQ,GACJ,MAAM,EAAE,CAAC;AAEjB,yBAAe,GACX,mBAAmB,EAAE,GAAG;AAE5B,uBAAa,GACT,mBAAmB,EAAE,OAAO;AAEhC,0BAAgB,GACZ,mBAAmB,EAAE,OAAO;AAEhC,qCAAU,GAEN,OAAO,EAAE,IAAI;AlB5EjB,yBAAyB,GACrB,qCAAC,GkB8EG,OAAO,EAAE,YAAY;AAE7B,yCAA+B,GAC3B,mBAAmB,EAAE,QAAQ;AAEjC,iDAAuC,GACnC,mBAAmB,EAAE,QAAQ;;AAErC,WAAW,GACP,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,MAAM,EdzEO,IAAI,Ec0EjB,UAAU,EAAE,mCAAmC,EAC/C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,OAAO;AAEf,6BAAiB,GAEb,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,YAAY;AAExB,oCAAQ,GACJ,mBAAmB,EAAE,QAAQ;AAGjC,oCAAiB,GACb,OAAO,EAAE,GAAG;AAEhB,mCAAgB,GACZ,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,CAAC,EACV,gBAAgB,EAAE,EAAE;AAE5B,4BAAgB,GACZ,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EdlGM,IAAI,EcmGb,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,2BAAwB,EACpC,UAAU,EAAE,gCAAgC;AAE5C,+BAAE,GAEE,OAAO,EAAE,UAAU,EACnB,gBAAgB,EdvIT,OAAO;AcyId,sCAAQ,GACJ,mBAAmB,EAAE,MAAM;AAE/B,+CAAiB,GACb,gBAAgB,EdpIlB,IAAI;AcsIN,qCAAO,GACH,gBAAgB,EdtIV,IAAI;AcwId,+CAAiB,GACb,mBAAmB,EAAE,QAAQ;AlB3IzC,yBAAyB,GkB8IrB,4BAAgB,GACZ,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,IAAI,EACX,YAAY,EAAE,IAAI;EAEtB,oCAAwB,GACpB,mBAAmB,EAAE,QAAQ;;ACzKzC,GAAG,GACC,SAAS,EAAE,IAAI", +"sources": ["../../../../src/default/assets/css/vendors/_normalize.sass","../../../../src/default/assets/css/vendors/_highlight.js.sass","../../../../src/default/assets/css/setup/_mixins.sass","../../../../src/default/assets/css/setup/_grid.sass","../../../../src/default/assets/css/setup/_icons.scss","../../../../src/default/assets/css/setup/_animations.sass","../../../../src/default/assets/css/setup/_typography.sass","../../../../src/default/assets/css/_constants.sass","../../../../src/default/assets/css/layouts/_default.sass","../../../../src/default/assets/css/layouts/_minimal.sass","../../../../src/default/assets/css/elements/_comment.sass","../../../../src/default/assets/css/elements/_filter.sass","../../../../src/default/assets/css/elements/_footer.sass","../../../../src/default/assets/css/elements/_hierarchy.sass","../../../../src/default/assets/css/elements/_index.sass","../../../../src/default/assets/css/elements/_member.sass","../../../../src/default/assets/css/elements/_navigation.sass","../../../../src/default/assets/css/elements/_panel.sass","../../../../src/default/assets/css/elements/_search.sass","../../../../src/default/assets/css/elements/_signatures.sass","../../../../src/default/assets/css/elements/_sources.sass","../../../../src/default/assets/css/elements/_toolbar.sass","../../../../src/default/assets/css/elements/_images.sass"], +"names": [], +"file": "main.css" +} diff --git a/scripts/typedoc/theme/assets/images/icons.png b/scripts/typedoc/theme/assets/images/icons.png new file mode 100644 index 0000000000..cb2d11573b Binary files /dev/null and b/scripts/typedoc/theme/assets/images/icons.png differ diff --git a/scripts/typedoc/theme/assets/images/icons@2x.png b/scripts/typedoc/theme/assets/images/icons@2x.png new file mode 100644 index 0000000000..8932ba20ff Binary files /dev/null and b/scripts/typedoc/theme/assets/images/icons@2x.png differ diff --git a/scripts/typedoc/theme/assets/images/widgets.png b/scripts/typedoc/theme/assets/images/widgets.png new file mode 100644 index 0000000000..c7380532ac Binary files /dev/null and b/scripts/typedoc/theme/assets/images/widgets.png differ diff --git a/scripts/typedoc/theme/assets/images/widgets@2x.png b/scripts/typedoc/theme/assets/images/widgets@2x.png new file mode 100644 index 0000000000..4bbbd57272 Binary files /dev/null and b/scripts/typedoc/theme/assets/images/widgets@2x.png differ diff --git a/scripts/typedoc/theme/assets/js/main.js b/scripts/typedoc/theme/assets/js/main.js new file mode 100644 index 0000000000..528a3b02a9 --- /dev/null +++ b/scripts/typedoc/theme/assets/js/main.js @@ -0,0 +1,5 @@ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function s(a){var b=a.length,c=n.type(a);return"function"!==c&&!n.isWindow(a)&&(!(1!==a.nodeType||!b)||("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a))}function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}function D(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),"string"==typeof(c=a.getAttribute(d))){try{c="true"===c||"false"!==c&&("null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c)}catch(e){}M.set(a,b,c)}else c=void 0;return c}function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("