pax_global_header00006660000000000000000000000064146455507610014527gustar00rootroot0000000000000052 comment=b2a10e14bb81c1b7cb6e488c112fe55cb2218d7d jspecify-1.0.0/000077500000000000000000000000001464555076100133415ustar00rootroot00000000000000jspecify-1.0.0/.gitattributes000066400000000000000000000001041464555076100162270ustar00rootroot00000000000000gradlew linguist-generated=true gradlew.bat linguist-generated=true jspecify-1.0.0/.github/000077500000000000000000000000001464555076100147015ustar00rootroot00000000000000jspecify-1.0.0/.github/dependabot.yml000066400000000000000000000004221464555076100175270ustar00rootroot00000000000000version: 2 updates: - package-ecosystem: "gradle" directory: "/" schedule: interval: "daily" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "daily" - package-ecosystem: "npm" directory: "/docs" schedule: interval: "daily" jspecify-1.0.0/.github/workflows/000077500000000000000000000000001464555076100167365ustar00rootroot00000000000000jspecify-1.0.0/.github/workflows/build.yml000066400000000000000000000063171464555076100205670ustar00rootroot00000000000000name: Build # Requires: # # * A repository variable named REFERENCE_CHECKER_REPO with the name of the reference checker repo # within this fork of JSpecify. on: push: branches: [main, 'dev-*'] paths-ignore: - 'docs/**' pull_request: branches: [main, 'dev-*'] paths-ignore: - 'docs/**' defaults: run: shell: bash --noprofile --norc -e -o pipefail -x {0} jobs: build: name: JDK ${{ matrix.java_version }} runs-on: ubuntu-latest strategy: matrix: java_version: [11, 17, 21] experimental: [false] env: JAVA_VERSION: ${{ matrix.java_version }} continue-on-error: ${{ matrix.experimental }} steps: - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v3 - name: Set up JDK ${{ matrix.java_version }} uses: actions/setup-java@v4 with: distribution: temurin java-version: ${{ matrix.java_version }} cache: gradle - run: | ./gradlew spotlessCheck build publishToMavenLocal --no-daemon publish-snapshot: name: Publish Conformance Tests Snapshot runs-on: ubuntu-latest needs: build if: github.repository == 'jspecify/jspecify' && github.ref_name == 'main' && github.event_name == 'push' env: JAVA_VERSION: 17 steps: - name: Check out the code uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v4 with: distribution: temurin java-version: ${{ env.JAVA_VERSION }} - name: Set up Gradle uses: gradle/gradle-build-action@v3 - name: Publish conformance tests snapshot run: ./gradlew publishConformanceTestsPublicationToSonatypeRepository env: ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.sonatype_username }} ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.sonatype_password }} reference-checker-tests: name: Run Reference Checker Tests runs-on: ubuntu-latest env: reference_checker_repo: ${{ vars.reference_checker_repo || 'jspecify-reference-checker' }} JAVA_VERSION: 17 steps: - name: Check out the code uses: actions/checkout@v4 with: path: jspecify - name: Check out the reference checker uses: actions/checkout@v4 with: repository: ${{ github.repository_owner }}/${{ env.reference_checker_repo }} path: ${{ env.reference_checker_repo }} - name: Set up Java uses: actions/setup-java@v4 with: distribution: temurin java-version: ${{ env.JAVA_VERSION }} - name: Run Conformance Tests if: github.base_ref == 'main' # only PRs onto main continue-on-error: true uses: gradle/gradle-build-action@v3 with: arguments: conformanceTests build-root-directory: ${{ env.reference_checker_repo }} - name: Run Samples Tests # only PRs onto samples-google-prototype if: github.base_ref == 'samples-google-prototype' continue-on-error: true uses: gradle/gradle-build-action@v3 with: arguments: jspecifySamplesTest build-root-directory: ${{ env.reference_checker_repo }} jspecify-1.0.0/.github/workflows/docs.yml000066400000000000000000000032511464555076100204120ustar00rootroot00000000000000name: Docs on: push: branches: - main - '*-1.0' - 'dev-*' paths: - '.github/**' - '*gradle*' - 'docs/**' - 'gradle/**' pull_request: branches: - main - '*-1.0' - 'dev-*' paths: - '.github/**' - '*gradle*' - 'docs/**' - 'gradle/**' jobs: # Runs on PRs and push to ensure the documentation successfully builds. build: name: Build Documentation runs-on: ubuntu-latest env: JAVA_VERSION: 22 steps: - name: Check out project uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v4 with: distribution: temurin java-version: ${{ env.JAVA_VERSION }} - name: Set up Gradle uses: gradle/actions/setup-gradle@v3 - name: Build docs run: ./gradlew buildDocs - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: docs/build # Deploys the documentation if this is a push to the main branch. deploy: name: Deploy Documentation if: github.event_name == 'push' && github.ref == 'refs/heads/main' needs: build runs-on: ubuntu-latest # Grant GITHUB_TOKEN the permissions required to make a Pages deployment permissions: pages: write # to deploy to Pages id-token: write # to verify the deployment originates from an appropriate source # Deploy to the github-pages environment environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 jspecify-1.0.0/.github/workflows/update-conformance-test-reports.yml000066400000000000000000000025551464555076100257130ustar00rootroot00000000000000name: Update Reference Checker Conformance Test Reports # Requires: # * A repository variable named REFERENCE_CHECKER_REPO with the name of the reference checker repo # within this fork of JSpecify. # * A secret named REFERENCE_CHECKER_WORKFLOW_PAT with a fine-grained personal access token that has # read permissions on metadata and read+write permissions on contents for the reference checker # repo within this fork of JSpecify. The token must be only for the single repo. on: push: branches: [ main ] paths-ignore: - 'docs/**' env: reference_checker_repo: ${{ github.repository_owner }}/${{ vars.reference_checker_repo }} defaults: run: shell: bash --noprofile --norc -e -o pipefail -x {0} jobs: udpate-reference-checker-reports: name: Update reference checker conformance test reports if necessary runs-on: ubuntu-latest steps: - name: Trigger workflow on ${{ env.reference_checker_repo }} run: | curl -L \ -X POST \ -H 'Accept: application/vnd.github+json' \ -H "Authorization: Bearer ${TOKEN}"\ -H 'X-GitHub-Api-Version: 2022-11-28' \ "https://api.github.com/repos/${reference_checker_repo}/dispatches" \ -d '{"event_type":"update-conformance-test-reports","client_payload":{}}' env: TOKEN: ${{ secrets.REFERENCE_CHECKER_WORKFLOW_PAT }} jspecify-1.0.0/.gitignore000066400000000000000000000155221464555076100153360ustar00rootroot00000000000000# Created by https://www.toptal.com/developers/gitignore/api/gradle,eclipse,intellij,macos,node # Edit at https://www.toptal.com/developers/gitignore?templates=gradle,eclipse,intellij,macos,node ### Eclipse ### .metadata bin/ tmp/ *.tmp *.bak *.swp *~.nib local.properties .settings/ .loadpath .recommenders # External tool builders .externalToolBuilders/ # Locally stored "Eclipse launch configurations" *.launch # PyDev specific (Python IDE for Eclipse) *.pydevproject # CDT-specific (C/C++ Development Tooling) .cproject # CDT- autotools .autotools # Java annotation processor (APT) .factorypath # PDT-specific (PHP Development Tools) .buildpath # sbteclipse plugin .target # Tern plugin .tern-project # TeXlipse plugin .texlipse # STS (Spring Tool Suite) .springBeans # Code Recommenders .recommenders/ # Annotation Processing .apt_generated/ .apt_generated_test/ # Scala IDE specific (Scala & Java development for Eclipse) .cache-main .scala_dependencies .worksheet # Uncomment this line if you wish to ignore the project description file. # Typically, this file would be tracked if it contains build/dependency configurations: #.project ### Eclipse Patch ### # Spring Boot Tooling .sts4-cache/ ### Intellij ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff .idea/**/workspace.xml .idea/**/tasks.xml .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf # AWS User-specific .idea/**/aws.xml # Generated files .idea/**/contentModel.xml # Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml .idea/**/dbnavigator.xml # Gradle .idea/**/gradle.xml .idea/**/libraries # Gradle and Maven with auto-import # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. # .idea/artifacts # .idea/compiler.xml # .idea/jarRepositories.xml # .idea/modules.xml # .idea/*.iml # .idea/modules # *.iml # *.ipr # CMake cmake-build-*/ # Mongo Explorer plugin .idea/**/mongoSettings.xml # File-based project format *.iws # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # SonarLint plugin .idea/sonarlint/ # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties # Editor-based Rest Client .idea/httpRequests # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser ### Intellij Patch ### # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 # *.iml # modules.xml # .idea/misc.xml # *.ipr # Sonarlint plugin # https://plugins.jetbrains.com/plugin/7973-sonarlint .idea/**/sonarlint/ # SonarQube Plugin # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin .idea/**/sonarIssues.xml # Markdown Navigator plugin # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced .idea/**/markdown-navigator.xml .idea/**/markdown-navigator-enh.xml .idea/**/markdown-navigator/ # Cache file creation bug # See https://youtrack.jetbrains.com/issue/JBR-2257 .idea/$CACHE_FILE$ # CodeStream plugin # https://plugins.jetbrains.com/plugin/12206-codestream .idea/codestream.xml # Azure Toolkit for IntelliJ plugin # https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij .idea/**/azureSettings.xml ### macOS ### # General .DS_Store .AppleDouble .LSOverride # Icon must end with two \r Icon # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk ### macOS Patch ### # iCloud generated files *.icloud ### Node ### # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage *.lcov # nyc test coverage .nyc_output # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules/ jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) web_modules/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Optional stylelint cache .stylelintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # dotenv environment variable files .env .env.development.local .env.test.local .env.production.local .env.local # parcel-bundler cache (https://parceljs.org/) .cache .parcel-cache # Next.js build output .next out # Nuxt.js build / generate output .nuxt dist # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and not Next.js # https://nextjs.org/blog/next-9-1#public-directory-support # public # vuepress build output .vuepress/dist # vuepress v2.x temp and cache directory .temp # Docusaurus cache and generated files .docusaurus # Serverless directories .serverless/ # FuseBox cache .fusebox/ # DynamoDB Local files .dynamodb/ # TernJS port file .tern-port # Stores VSCode versions used for testing VSCode extensions .vscode-test # yarn v2 .yarn/cache .yarn/unplugged .yarn/build-state.yml .yarn/install-state.gz .pnp.* ### Node Patch ### # Serverless Webpack directories .webpack/ # Optional stylelint cache # SvelteKit build / generate output .svelte-kit ### Gradle ### .gradle **/build/ !src/**/build/ # Ignore Gradle GUI config gradle-app.setting # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) !gradle-wrapper.jar # Avoid ignore Gradle wrappper properties !gradle-wrapper.properties # Cache of project .gradletasknamecache # Eclipse Gradle plugin generated files # Eclipse Core .project # JDT-specific (Eclipse Java Development Tools) .classpath ### Gradle Patch ### # Java heap dump *.hprof # End of https://www.toptal.com/developers/gitignore/api/gradle,eclipse,intellij,macos,node ### Docusaurus docs/.docusaurus jspecify-1.0.0/.idea/000077500000000000000000000000001464555076100143215ustar00rootroot00000000000000jspecify-1.0.0/.idea/.gitignore000066400000000000000000000001631464555076100163110ustar00rootroot00000000000000# Default ignored files /shelf/ /compiler.xml /jarRepositories.xml /markdown.xml /misc.xml /vcs.xml /workspace.xml jspecify-1.0.0/.ignore000066400000000000000000000000161464555076100146220ustar00rootroot00000000000000node_modules/ jspecify-1.0.0/AUTHORS000066400000000000000000000004651464555076100144160ustar00rootroot00000000000000# This is the list of JSpecify authors for copyright purposes. # # This does not necessarily list everyone who has contributed code, since in # some cases, their employer may be the copyright holder. To see the full list # of contributors, see the revision history in source control. Google LLC SpotBugs Team jspecify-1.0.0/CONTRIBUTING.md000066400000000000000000000021151464555076100155710ustar00rootroot00000000000000# How to Contribute We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow. ## Contributor License Agreement Contributions to this project must be accompanied by a Contributor License Agreement. You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project. Head over to to see your current agreements on file or to sign a new one. You generally only need to submit a CLA once, so if you've already submitted one (even if it was for a different project), you probably don't need to do it again. ## Code reviews All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more information on using pull requests. ## Community Guidelines This project follows [Google's Open Source Community Guidelines](https://opensource.google.com/conduct/). jspecify-1.0.0/LICENSE000066400000000000000000000261361464555076100143560ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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. jspecify-1.0.0/README.md000066400000000000000000000011401464555076100146140ustar00rootroot00000000000000# JSpecify An artifact of well-specified annotations to power static analysis checks and JVM language interop. Developed by consensus of the partner organizations listed at our main web site, [jspecify.org](http://jspecify.org). Our current focus is on annotations for nullness analysis. ## Status [Version 0.3](https://github.com/jspecify/jspecify/releases/tag/v0.3.0) is relatively safe to depend on in your code. Or you can read [a more detailed answer](https://github.com/jspecify/jspecify/wiki/adoption). ## Things to read See [jspecify.org/docs/start-here](http://jspecify.org/docs/start-here). jspecify-1.0.0/bnd.bnd000066400000000000000000000006671464555076100146020ustar00rootroot00000000000000Bundle-SymbolicName: org.jspecify.jspecify Bundle-Name: JSpecify annotations Bundle-Vendor: The JSpecify Authors Bundle-Description: An artifact of well-specified annotations to power static analysis checks and JVM language interop. Bundle-DocURL: https://jspecify.dev/docs/start-here Bundle-License: https://www.apache.org/licenses/LICENSE-2.0 -exportcontents: org.jspecify.* -reproducible: true -noextraheaders: true -snapshot: SNAPSHOT jspecify-1.0.0/build.gradle000066400000000000000000000047701464555076100156300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ plugins { id 'java-library' id 'com.diffplug.spotless' version '6.25.0' id 'com.github.node-gradle.node' version '7.0.2' id 'io.github.gradle-nexus.publish-plugin' version '1.3.0' apply false id 'net.ltgt.errorprone' version '3.0.1' id "biz.aQute.bnd.builder" version "7.0.0" } ext { junitVersion = '5.9.3' errorproneVersion = '2.20.0' } repositories { mavenCentral() } def javaVersion = JavaLanguageVersion.of(System.env.JAVA_VERSION ?: 11) java.toolchain.languageVersion = javaVersion apply from: "gradle/mrjar.gradle" apply from: "gradle/integration-test.gradle" apply from: "gradle/format.gradle" apply from: "gradle/publish.gradle" dependencies { errorprone "com.google.errorprone:error_prone_core:${errorproneVersion}" } java { if (javaVersion.canCompileOrRun(15)) { withJavadocJar() } withSourcesJar() sourceCompatibility 8 targetCompatibility 8 // but compile against newer JDK libraries so that we can use @Target({..., MODULE}) tasks.named('sourcesJar') { exclude('**.class') } } tasks.withType(AbstractArchiveTask).configureEach { preserveFileTimestamps = false reproducibleFileOrder = true filePermissions { unix('rw-r--r--') } dirPermissions { unix('rwxr-xr-x') } } jar { manifest { attributes( "Bundle-Version": version, "Implementation-Version": version ) } } javadoc { options.encoding = 'UTF-8' } node { download = true nodeProjectDir = file("${project.projectDir}/docs") } tasks.register('buildDocs') { group 'Build' description 'Builds the jspecify.org website.' dependsOn('npm_run_build') dependsOn('javadoc') doLast { copy { from tasks.named('javadoc') into "${project.projectDir}/docs/build/docs/api" } } } defaultTasks 'spotlessApply', 'build' jspecify-1.0.0/cftojspecify/000077500000000000000000000000001464555076100160315ustar00rootroot00000000000000jspecify-1.0.0/cftojspecify/java/000077500000000000000000000000001464555076100167525ustar00rootroot00000000000000jspecify-1.0.0/cftojspecify/java/com/000077500000000000000000000000001464555076100175305ustar00rootroot00000000000000jspecify-1.0.0/cftojspecify/java/com/google/000077500000000000000000000000001464555076100210045ustar00rootroot00000000000000jspecify-1.0.0/cftojspecify/java/com/google/devtools/000077500000000000000000000000001464555076100226435ustar00rootroot00000000000000jspecify-1.0.0/cftojspecify/java/com/google/devtools/javatools/000077500000000000000000000000001464555076100246455ustar00rootroot00000000000000jspecify-1.0.0/cftojspecify/java/com/google/devtools/javatools/typeannotationrefactoring/000077500000000000000000000000001464555076100321455ustar00rootroot00000000000000CheckerFrameworkToJspecifyRefactoring.java000066400000000000000000000663221464555076100423500ustar00rootroot00000000000000jspecify-1.0.0/cftojspecify/java/com/google/devtools/javatools/typeannotationrefactoring/* * Copyright 2020 The JSpecify Authors. * * 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. */ package com.google.devtools.javatools.typeannotationrefactoring; import static com.google.common.base.Verify.verify; import static com.google.common.base.Verify.verifyNotNull; import static com.google.common.collect.Iterables.getOnlyElement; import static com.google.common.collect.Range.closedOpen; import static com.sun.source.tree.Tree.Kind.IDENTIFIER; import static com.sun.source.tree.Tree.Kind.MEMBER_SELECT; import static java.nio.charset.StandardCharsets.UTF_8; import static java.nio.file.Files.readAllBytes; import static java.nio.file.Files.write; import static java.util.Arrays.stream; import static java.util.Comparator.comparing; import static javax.tools.Diagnostic.Kind.ERROR; import static javax.tools.StandardLocation.PLATFORM_CLASS_PATH; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Range; import com.sun.source.tree.AnnotatedTypeTree; import com.sun.source.tree.AnnotationTree; import com.sun.source.tree.ClassTree; import com.sun.source.tree.CompilationUnitTree; import com.sun.source.tree.IdentifierTree; import com.sun.source.tree.ImportTree; import com.sun.source.tree.LiteralTree; import com.sun.source.tree.MemberSelectTree; import com.sun.source.tree.MethodTree; import com.sun.source.tree.NewArrayTree; import com.sun.source.tree.Tree; import com.sun.source.tree.TypeParameterTree; import com.sun.source.tree.VariableTree; import com.sun.source.tree.WildcardTree; import com.sun.source.util.SimpleTreeVisitor; import com.sun.source.util.TreePath; import com.sun.source.util.TreePathScanner; import com.sun.tools.javac.file.JavacFileManager; import com.sun.tools.javac.parser.JavacParser; import com.sun.tools.javac.parser.ParserFactory; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; import com.sun.tools.javac.util.Context; import com.sun.tools.javac.util.Log; import com.sun.tools.javac.util.Options; import java.io.IOError; import java.io.IOException; import java.io.UncheckedIOException; import java.net.URI; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Comparator; import java.util.Map.Entry; import java.util.SortedMap; import java.util.TreeMap; import java.util.stream.Stream; import javax.lang.model.element.Name; import javax.tools.DiagnosticCollector; import javax.tools.DiagnosticListener; import javax.tools.JavaFileObject; import javax.tools.SimpleJavaFileObject; /** * A best effort refactoring to migrate Checker Framework {@code @Nullable} type annotations to * similar-ish JSpecify annotations. * *

usage: CheckerFrameworkToJspecifyRefactoring [files] */ public final class CheckerFrameworkToJspecifyRefactoring { public static void main(String[] args) { stream(args).parallel().forEach(file -> process(file)); } private static void process(String file) { if (!file.endsWith(".java")) { return; } try { Path path = Paths.get(file); String input = new String(readAllBytes(path), UTF_8); String output = refactor(input); if (!input.equals(output)) { write(path, output.getBytes(UTF_8)); } } catch (IOException e) { throw new UncheckedIOException(file, e); } } private static final ImmutableMap SUBSTITUTES = ImmutableMap.of("Nullable", "Nullable", "PolyNull", "Nullable"); private static String refactor(String input) { SortedMap, String> definiteReplacements = new TreeMap<>(BY_START_THEN_END); SortedMap, String> possibleReplacements = new TreeMap<>(BY_START_THEN_END); Context context = new Context(); JCCompilationUnit unit = parse(context, input); boolean[] sawAnnotatedForNullness = new boolean[1]; new TreePathScanner() { boolean addedImports; boolean inNullHostileClass; boolean inJavaUtil; @Override public Void visitCompilationUnit(CompilationUnitTree node, Void aVoid) { // TODO(cpovirk): Calling Tree.toString() is a hack. inJavaUtil = node.getPackageName().toString().startsWith("java.util"); return super.visitCompilationUnit(node, aVoid); } @Override public Void visitClass(ClassTree node, Void aVoid) { boolean oldInNullHostileClass = inNullHostileClass; try { inNullHostileClass |= node.getSimpleName().contentEquals("ConcurrentHashMap") || node.getSimpleName().contentEquals("ConcurrentLinkedDeque") || node.getSimpleName().contentEquals("ConcurrentSkipListMap") || node.getSimpleName().contentEquals("ConcurrentSkipListSet") || node.getSimpleName().contentEquals("Dictionary") || node.getSimpleName().contentEquals("Hashtable") || node.getSimpleName().contentEquals("Properties") || node.getSimpleName().contentEquals("UIDefaults") || node.getSimpleName().contentEquals("UIManager"); return super.visitClass(node, aVoid); } finally { inNullHostileClass = oldInNullHostileClass; } } @Override public Void visitImport(ImportTree node, Void aVoid) { if (!addedImports) { addedImports = true; definiteReplacements.put(atStart(node), "import org.jspecify.annotations.Nullable;\n"); possibleReplacements.put( atStart(node), "import org.jspecify.annotations.NullMarked;\n" + "import org.jspecify.annotations.Nullable;\n"); } if (node.getQualifiedIdentifier().toString().startsWith("org.checkerframework.")) { definiteReplacements.put(inPlaceOfNodeAndTrailingNewline(node, unit), ""); } return super.visitImport(node, aVoid); } @Override public Void visitAnnotation(AnnotationTree node, Void aVoid) { String simpleName = getSimpleName(node.getAnnotationType()); if (SUBSTITUTES.containsKey(simpleName)) { // putIfAbsent in case we're removing the annotation entirely (for <@Nullable T>). definiteReplacements.putIfAbsent( inPlaceOf(node, unit), "@" + SUBSTITUTES.get(simpleName)); } else if (simpleName.equals("AnnotatedFor")) { sawAnnotatedForNullness[0] = node.getArguments().stream() .flatMap( a -> a instanceof NewArrayTree ? ((NewArrayTree) a).getInitializers().stream() : Stream.of(a)) .anyMatch(a -> ((LiteralTree) a).getValue().equals("nullness")); definiteReplacements.put(inPlaceOf(node, unit), ""); possibleReplacements.put(inPlaceOf(node, unit), "@NullMarked"); } else if (CF_ANNOTATIONS.contains(simpleName)) { definiteReplacements.put(inPlaceOf(node, unit), ""); } return super.visitAnnotation(node, aVoid); } @Override public Void visitTypeParameter(TypeParameterTree node, Void aVoid) { if (node.getBounds().isEmpty()) { possibleReplacements.put(atEnd(node, unit), " extends @Nullable Object"); } else if (soleBoundIsNonNullObject(node)) { definiteReplacements.put(inPlaceOf(node, unit), node.getName().toString()); /* * Don't visit children: Doing so may produce overlapping edits to remove individual * annotations (@NonNull on the bound and/or an annotation on the type parameter itself). */ return null; } for (AnnotationTree a : node.getAnnotations()) { definiteReplacements.put(inPlaceOf(a, unit), ""); } return super.visitTypeParameter(node, aVoid); } @Override public Void visitAnnotatedType(AnnotatedTypeTree node, Void aVoid) { if (node.getUnderlyingType() instanceof WildcardTree) { for (AnnotationTree a : node.getAnnotations()) { definiteReplacements.put(inPlaceOf(a, unit), ""); } } return super.visitAnnotatedType(node, aVoid); } @Override public Void visitVariable(VariableTree node, Void aVoid) { Tree parent = getCurrentPath().getParentPath().getLeaf(); if (!(parent instanceof MethodTree)) { return super.visitVariable(node, aVoid); } MethodTree method = (MethodTree) parent; if (method.getReceiverParameter() == node) { if (method.getParameters().isEmpty()) { definiteReplacements.put(inPlaceOf(node, unit), ""); } else { definiteReplacements.put( closedOpen(startPos(node), startPos(method.getParameters().get(0))), ""); } /* * Don't visit children: Doing so may produce overlapping edits to remove individual * annotations (typically @Nullable on the receiver variable). */ return null; } /* * TODO(cpovirk): The following is imperfect. Notably, some classes are only *partially* * null-hostile. An example is ConcurrentHashMap, whose 2-arg remove method rejects null * keys but tolerates null values, even though ConcurrentHashMap normally rejects both. But * maybe we'll just fix those up by hand, rather than add special cases here. */ if (inJavaUtil && !inNullHostileClass && (method.getName().contentEquals("contains") || method.getName().contentEquals("containsKey") || method.getName().contentEquals("containsValue") || method.getName().contentEquals("get") || method.getName().contentEquals("indexOf") || method.getName().contentEquals("lastIndexOf") || method.getName().contentEquals("remove") || method.getName().contentEquals("removeFirstOccurrence") || method.getName().contentEquals("removeLastOccurrence")) && method.getParameters().size() == 1 && (node.getType().getKind() == IDENTIFIER || node.getType().getKind() == MEMBER_SELECT) && getSimpleName(node.getType()).equals("Object")) { definiteReplacements.put(inPlaceOf(node, unit), "@Nullable Object " + node.getName()); // Don't visit children. return null; } if (inJavaUtil && !inNullHostileClass && (method.getName().contentEquals("getOrDefault") // first parameter only (type Object) || method.getName().contentEquals("remove")) // both parameters && method.getParameters().size() == 2 && (node.getType().getKind() == IDENTIFIER || node.getType().getKind() == MEMBER_SELECT) && getSimpleName(node.getType()).equals("Object")) { definiteReplacements.put(inPlaceOf(node, unit), "@Nullable Object " + node.getName()); // Don't visit children. return null; } if (inJavaUtil && !inNullHostileClass && method.getName().contentEquals("containsAll") && method.getParameters().size() == 1) { definiteReplacements.put(inPlaceOf(node, unit), "Collection " + node.getName()); // Don't visit children. return null; } /* * Calling removeAll(collectionContainingNull) and retainAll(collectionContainingNull) * typically works even on null-hostile collections: They are often implemented by iterating * over the *receiver* collection and calling contains(e) on the *argument* collection. * Thus, if there's a problem, it comes from the class of the *argument*. Those methods are * even documented accordingly. So we make the parameter type `Collection` even in * null-hostile classes. * * TODO(cpovirk): But there are still exceptions: ConcurrentSkipListSet iterates over the * argument collection and calls this.remove(e), which rejects null. It is documented * accordingly. It would be nice for us to annotate it accordingly. But maybe we'll just fix * that up by hand, rather than add a special case here. * * A *partial* exception is AbstractSet.removeAll, which *sometimes* uses a * ConcurrentSkipListSet-style implementation and sometimes does not (at least for now: * https://bugs.openjdk.java.net/browse/JDK-6394757). However, we want to accept * Collection there because some AbstractSet subclasses permit this.remove(null). * TODO(cpovirk): It could be nice to add "fake overrides" with signature * `removeAll(Collection)` in problematic subclasses, but we'd want to * make sure that checkers would actually apply them (since those overrides don't exist in * the java.** sources). */ if (inJavaUtil && (method.getName().contentEquals("removeAll") || method.getName().contentEquals("retainAll")) && method.getParameters().size() == 1) { definiteReplacements.put(inPlaceOf(node, unit), "Collection " + node.getName()); // Don't visit children. return null; } /* * TODO(cpovirk): Consider also putting @Nullable on the parameter of all equals() methods, * @Nullable on the String and Throwable parameters of all Throwable constructors, and * anything else that can typically be done mechanically. Better yet, make such changes * upstream. */ return super.visitVariable(node, aVoid); } }.scan(new TreePath(unit), null); if (sawAnnotatedForNullness[0]) { definiteReplacements.putAll(possibleReplacements); } return applyFixes(input, definiteReplacements); } private static boolean soleBoundIsNonNullObject(TypeParameterTree node) { if (node.getBounds().size() != 1) { return false; } Tree boundAsTree = getOnlyElement(node.getBounds()); if (!(boundAsTree instanceof AnnotatedTypeTree)) { return false; } AnnotatedTypeTree boundAsAnnotatedTree = (AnnotatedTypeTree) boundAsTree; return getSimpleName(boundAsAnnotatedTree.getUnderlyingType()).equals("Object") && isUnannotatedOrNonNull(boundAsAnnotatedTree); } private static boolean isUnannotatedOrNonNull(AnnotatedTypeTree node) { switch (node.getAnnotations().size()) { case 0: return true; case 1: AnnotationTree annotation = getOnlyElement(node.getAnnotations()); return getSimpleName(annotation.getAnnotationType()).equals("NonNull"); default: // TODO(cpovirk): This could in principle come up. Handle it. throw new RuntimeException( "Handling of bounds with multiple annotations not yet implemented for " + node); } } private static Range atStart(Tree classTree) { int startPos = startPos(classTree); return closedOpen(startPos, startPos); } private static Range atEnd(Tree node, JCCompilationUnit unit) { int endPos = endPos(node, unit); return closedOpen(endPos, endPos); } private static Range inPlaceOf(Tree node, JCCompilationUnit unit) { return closedOpen(startPos(node), endPos(node, unit)); } private static Range inPlaceOfNodeAndTrailingNewline(Tree node, JCCompilationUnit unit) { return closedOpen(startPos(node), endPos(node, unit) + 1); } private static int startPos(Tree tree) { int startPos = ((JCTree) tree).getStartPosition(); verify(startPos >= 0); return startPos; } private static int endPos(Tree node, JCCompilationUnit unit) { int endPos = ((JCTree) node).getEndPosition(unit.endPositions); verify(endPos >= 0); return endPos; } /** Parses {@code input} as a Java compilation unit. */ private static JCCompilationUnit parse(Context context, String input) { DiagnosticCollector diagnostics = new DiagnosticCollector<>(); context.put(DiagnosticListener.class, diagnostics); Options.instance(context).put("allowStringFolding", "false"); JavacFileManager fileManager = new JavacFileManager(context, true, UTF_8); try { fileManager.setLocation(PLATFORM_CLASS_PATH, ImmutableList.of()); } catch (IOException e) { // impossible throw new IOError(e); } SimpleJavaFileObject source = new SimpleJavaFileObject(URI.create("source"), JavaFileObject.Kind.SOURCE) { @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) { return input; } }; Log.instance(context).useSource(source); ParserFactory parserFactory = ParserFactory.instance(context); JavacParser parser = parserFactory.newParser( input, /* keepDocComments= */ true, /* keepEndPos= */ true, /* keepLineMap= */ true); JCCompilationUnit unit = parser.parseCompilationUnit(); unit.sourcefile = source; if (diagnostics.getDiagnostics().stream().anyMatch(d -> d.getKind() == ERROR)) { throw new AssertionError(diagnostics.getDiagnostics()); } return unit; } /** Applies the given replacements to the source text. */ private static String applyFixes(String source, SortedMap, String> replacements) { if (replacements.isEmpty()) { return source; } StringBuilder sb = new StringBuilder(source); int offset = 0; for (Entry, String> replacement : replacements.entrySet()) { Range range = replacement.getKey(); String replaceWith = replacement.getValue(); int start = offset + range.lowerEndpoint(); int end = offset + range.upperEndpoint(); sb.replace(start, end, replaceWith); offset += replaceWith.length() - (range.upperEndpoint() - range.lowerEndpoint()); } return sb.toString(); } /** Gets the simple name of a select or identifier tree. */ private static String getSimpleName(Tree tree) { Name name = tree.accept( new SimpleTreeVisitor() { @Override public Name visitMemberSelect(MemberSelectTree node, Void unused) { return node.getIdentifier(); } @Override public Name visitIdentifier(IdentifierTree node, Void unused) { return node.getName(); } }, null); verifyNotNull(name, "name for %s %s", tree.getKind(), tree); return name.toString(); } private static final ImmutableSet CF_ANNOTATIONS = ImmutableSet.of( "A", "Acceleration", "AlwaysSafe", "Angle", "AnnotatedFor", "Area", "ArrayLen", "ArrayLenRange", "AssertNonNullIfNonNull", "AwtAlphaCompositingRule", "AwtColorSpace", "AwtCursorType", "AwtFlowLayout", "BinaryName", "BinaryNameInUnnamedPackage", "BoolVal", "Bottom", "BottomThis", "BottomVal", "C", "cd", "CFComment", "CanonicalName", "CanonicalNameOrEmpty", "ClassBound", "ClassGetName", "ClassGetSimpleName", "ClassVal", "ClassValBottom", "CompilerMessageKey", "CompilerMessageKeyBottom", "ConditionalPostconditionAnnotation", "ConversionCategory", "Covariant", "Current", "DefaultFor", "DefaultQualifier", "DefaultQualifierForUse", "DefaultQualifierInHierarchy", "degrees", "Deterministic", "DotSeparatedIdentifiers", "DoubleVal", "EnsuresKeyFor", "EnsuresKeyForIf", "EnsuresLockHeld", "EnsuresLockHeldIf", "EnsuresLTLengthOf", "EnsuresLTLengthOfIf", "EnsuresMinLenIf", "EnsuresNonNull", "EnsuresNonNullIf", "EnsuresQualifier", "EnsuresQualifierIf", "FBCBottom", "Fenum", "FenumBottom", "FenumTop", "FenumUnqualified", "FieldDescriptor", "FieldDescriptorForPrimitive", "FieldDescriptorForPrimitiveOrArrayInUnnamedPackage", "FieldInvariant", "Format", "FormatBottom", "FormatMethod", "FormatUtil", "ForName", "FqBinaryName", "FromByteCode", "FromStubFile", "FullyQualifiedName", "g", "GetClass", "GetConstructor", "GetMethod", "GTENegativeOne", "GuardedBy", "GuardedByBottom", "GuardedByUnknown", "GuardSatisfied", "h", "HasSubsequence", "Holding", "I18nChecksFormat", "I18nConversionCategory", "I18nFormat", "I18nFormatBottom", "I18nFormatFor", "I18nFormatUtil", "I18nInvalidFormat", "I18nMakeFormat", "I18nUnknownFormat", "I18nValidFormat", "Identifier", "IdentifierOrArray", "IgnoreInWholeProgramInference", "IndexFor", "IndexOrHigh", "IndexOrLow", "InheritedAnnotation", "Initialized", "InternalForm", "Interned", "InternedDistinct", "InternMethod", "IntRange", "IntRangeFromGTENegativeOne", "IntRangeFromNonNegative", "IntRangeFromPositive", "IntVal", "InvalidFormat", "InvisibleQualifier", "Invoke", "JavaExpression", "K", "KeyFor", "KeyForBottom", "kg", "km", "km2", "kmPERh", "LeakedToResult", "Length", "LengthOf", "LessThan", "LessThanBottom", "LessThanUnknown", "LiteralKind", "LocalizableKey", "LocalizableKeyBottom", "Localized", "LockHeld", "LockingFree", "LockPossiblyHeld", "LowerBoundBottom", "LowerBoundUnknown", "LTEqLengthOf", "LTLengthOf", "LTOMLengthOf", "Luminance", "m", "m2", "Mass", "MaybeAliased", "MaybeLeaked", "MaybePresent", "MayReleaseLocks", "MethodDescriptor", "MethodVal", "MethodValBottom", "min", "MinLen", "MinLenFieldInvariant", "MixedUnits", "mm", "mm2", "mol", "MonotonicNonNull", "MonotonicQualifier", "mPERs", "mPERs2", "NegativeIndexFor", "NewInstance", "NoDefaultQualifierForUse", "NonLeaked", "NonNegative", "NonNull", "NotOnlyInitialized", "Nullable", "NullnessUtil", "Opt", "PartialRegex", "PolyFenum", "PolyGuardedBy", "PolyIndex", "PolyInterned", "PolyKeyFor", "PolyLength", "PolyLowerBound", "PolymorphicQualifier", "PolyNull", "PolyPresent", "PolyRegex", "PolySameLen", "PolySignature", "PolySigned", "PolyTainted", "PolyUI", "PolyUIEffect", "PolyUIType", "PolyUnit", "PolyUpperBound", "PolyValue", "Positive", "PostconditionAnnotation", "PreconditionAnnotation", "Prefix", "Present", "PropertyKey", "PropertyKeyBottom", "Pure", "PurityUnqualified", "QualifierArgument", "QualifierForLiterals", "radians", "Regex", "RegexBottom", "RegexUtil", "ReleasesNoLocks", "RelevantJavaTypes", "ReportCall", "ReportCreation", "ReportInherit", "ReportOverride", "ReportReadWrite", "ReportUnqualified", "ReportUse", "ReportWrite", "RequiresNonNull", "RequiresQualifier", "ReturnsFormat", "s", "SafeEffect", "SafeType", "SameLen", "SameLenBottom", "SameLenUnknown", "SearchIndexBottom", "SearchIndexFor", "SearchIndexUnknown", "SideEffectFree", "SignatureBottom", "SignatureUnknown", "Signed", "SignednessBottom", "SignednessGlb", "SignednessUtil", "SignedPositive", "Speed", "StaticallyExecutable", "StringVal", "StubFiles", "Substance", "SubstringIndexBottom", "SubstringIndexFor", "SubstringIndexUnknown", "SubtypeOf", "SwingBoxOrientation", "SwingCompassDirection", "SwingElementOrientation", "SwingHorizontalOrientation", "SwingSplitPaneOrientation", "SwingTextOrientation", "SwingTitleJustification", "SwingTitlePosition", "SwingVerticalOrientation", "Tainted", "TargetLocations", "Temperature", "TerminatesExecution", "This", "Time", "TypeKind", "TypeUseLocation", "UI", "UIEffect", "UIPackage", "UIType", "UnderInitialization", "Unique", "UnitsBottom", "UnitsMultiple", "UnitsRelations", "UnitsTools", "UnknownClass", "UnknownCompilerMessageKey", "UnknownFormat", "UnknownInitialization", "UnknownInterned", "UnknownKeyFor", "UnknownLocalizableKey", "UnknownLocalized", "UnknownMethod", "UnknownPropertyKey", "UnknownRegex", "UnknownSignedness", "UnknownThis", "UnknownUnits", "UnknownVal", "Unqualified", "Unsigned", "Untainted", "Unused", "UpperBoundBottom", "UpperBoundFor", "UpperBoundUnknown", "UsesObjectEquals"); /* * We insert only closedOpen ranges, so we can safely compare only by endpoints, without needing * to check for differences in bound type. */ private static final Comparator> BY_START_THEN_END = comparing((Range r) -> r.lowerEndpoint()).thenComparing(Range::upperEndpoint); private CheckerFrameworkToJspecifyRefactoring() {} } jspecify-1.0.0/conformance-tests/000077500000000000000000000000001464555076100167735ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/build.gradle000066400000000000000000000065671464555076100212700ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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 org.gradle.api.JavaVersion plugins { id 'java-library' id 'distribution' } group 'org.jspecify.conformance' version '0.0.0-SNAPSHOT' repositories { mavenCentral() } sourceSets { // Dependencies required by the assertions deps { java {} } // Java files with assertions assertions { java { compileClasspath += sourceSets.deps.output } } } java { sourceCompatibility JavaVersion.VERSION_1_8 // JAR artifact for dependencies required by the assertions registerFeature("deps") { usingSourceSet(sourceSets.deps) } } distributions { main { contents { into('/assertions') { from sourceSets.assertions.java } into('/deps') { from depsJar from configurations.assertionsRuntimeClasspath } into('/samples') { from '../samples' } } } } dependencies { assertionsImplementation "org.jspecify:jspecify:0.0.0-SNAPSHOT" depsImplementation "org.jspecify:jspecify:0.0.0-SNAPSHOT" } // Make sure assertions compile. check.dependsOn(compileAssertionsJava) publishing { publications { conformanceTests(MavenPublication) { pom { groupId = 'org.jspecify.conformance' artifactId = 'conformance-tests' version = project.version name = 'JSpecify Conformance Test Suite' description = 'Assertions and dependencies representing a suite of conformance tests for JSpecify' url = 'http://jspecify.org/' artifact distZip licenses { license { name = 'The Apache License, Version 2.0' url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } scm { connection = 'scm:git:git@github.com:jspecify/jspecify.git' developerConnection = 'scm:git:git@github.com:jspecify/jspecify.git' url = 'https://github.com/jspecify/jspecify/' } developers { developer { id = 'netdpb' name = 'David P. Baker' email = 'dpb@google.com' } } } } } } // For local builds to be able to depend on the conformance tests. configurations { conformanceTestsZip { canBeConsumed = true canBeResolved = false attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, 'conformance-tests')) } } } artifacts { conformanceTestsZip distZip } jspecify-1.0.0/conformance-tests/src/000077500000000000000000000000001464555076100175625ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/000077500000000000000000000000001464555076100217545ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/000077500000000000000000000000001464555076100226755ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/000077500000000000000000000000001464555076100234645ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/000077500000000000000000000000001464555076100253005ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/000077500000000000000000000000001464555076100275725ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/000077500000000000000000000000001464555076100307345ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/Basic.java000066400000000000000000000032261464555076100326230ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests; import java.util.List; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; class Basic { @NonNull Object cannotConvertNullableToNonNull(@Nullable Object nullable) { // test:expression-type:Object?:nullable // test:sink-type:Object!:return // test:cannot-convert:Object? to Object! return nullable; } @Nullable Object canConvertNonNullToNullable(@NonNull Object nonNull) { // test:expression-type:Object!:nonNull // test:sink-type:Object?:return return nonNull; } @Nullable Object nullableObject; void testSinkType(@NonNull String nonNullString) { // test:sink-type:Object?:nullableObject nullableObject = nonNullString; // test:sink-type:String!:testSinkType#nonNullString testSinkType("aString"); } @NullMarked Object testWildcard(List nullableStrings) { // test:expression-type:List!:nullableStrings return nullableStrings; } } jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/Irrelevant.java000066400000000000000000000034301464555076100337120ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullUnmarked; import org.jspecify.annotations.Nullable; // Assertions about recognizing irrelevant annotations: those that have no or contradictory meaning // in their context. class Irrelevant { // Primitive types cannot be nullable. // test:irrelevant-annotation:Nullable @Nullable int nullablePrimitive() { return 0; } // Type parameters cannot be nullable. // test:irrelevant-annotation:Nullable <@Nullable T> void nullableTypeParameter(T param) {} // Type parameters cannot be non-null. // test:irrelevant-annotation:NonNull <@NonNull T> void nonNullTypeParameter(T param) {} // The same element cannot be both non-null and nullable. // test:irrelevant-annotation:NonNull // test:irrelevant-annotation:Nullable void bothNullableAndNonNull(@Nullable @NonNull String param) {} // The same element cannot be both null-marked and null-unmarked. // test:irrelevant-annotation:NullMarked @NullMarked // test:irrelevant-annotation:NullUnmarked @NullUnmarked static class BothNullMarkedAndNullUnmarked {} } jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/UsesDep.java000066400000000000000000000015641464555076100331550ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests; import org.jspecify.conformance.deps.Dep; /** This is here only to prove that assertions can refer to classes in deps. */ public class UsesDep { public static Dep dep() { // test:cannot-convert:null? to Dep* return null; } } irrelevantannotations/000077500000000000000000000000001464555076100353065ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/testsnotnullmarked/000077500000000000000000000000001464555076100401655ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotationsAnnotatedTypeParameters.java000066400000000000000000000060221464555076100456330ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/notnullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.notnullmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when applied * to type parameters themselves (as opposed to their bounds). * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ public interface AnnotatedTypeParameters { // test:name:Nullable on simple type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T> void nParameter(); // test:name:NonNull on simple type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T> void rParameter(); // test:name:Nullable on bounded type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T extends Object> void nParameterWithBound(); // test:name:NonNull on bounded type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T extends Object> void rParameterWithBound(); // test:name:NonNull on annotated-bounded type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T extends @Nullable Object> void rParameterWithNBound(); // test:name:Nullable on annotated-bounded type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T extends @NonNull Object> void nParameterWithRBound(); // test:name:Nullable on simple type parameter on class // test:irrelevant-annotation:Nullable interface NParameter<@Nullable T> {} // test:name:NonNull on simple type parameter on class // test:irrelevant-annotation:NonNull interface RParameter<@NonNull T> {} // test:name:Nullable on bounded type parameter on class // test:irrelevant-annotation:Nullable interface NParameterWithBound<@Nullable T extends Object> {} // test:name:NonNull on bounded type parameter on class // test:irrelevant-annotation:NonNull interface RParameterWithBound<@NonNull T extends Object> {} // test:name:NonNull on annotated-bounded type parameter on class // test:irrelevant-annotation:NonNull interface RParameterWithNBound<@NonNull T extends @Nullable Object> {} // test:name:Nullable on annotated-bounded type parameter on class // test:irrelevant-annotation:Nullable interface NParameterWithRBound<@Nullable T extends @NonNull Object> {} } AnnotatedWildcards.java000066400000000000000000000040461464555076100446060ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/notnullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.notnullmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; import org.jspecify.conformance.deps.nullmarked.NHolder; /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when applied * to wildcards themselves (as opposed to their bounds). * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ public interface AnnotatedWildcards { // test:name:Nullable on unbounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ?> nWildcard(); // test:name:NonNull on unbounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ?> rWildcard(); // test:name:Nullable on bounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ? extends Object> nWildcardWithBound(); // test:name:NonNull on bounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ? extends Object> rWildcardWithBound(); // test:name:NonNull on annotated-bounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ? extends @Nullable Object> rWildcardWithNBound(); // test:name:Nullable on annotated-bounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ? extends @NonNull Object> nWildcardWithRBound(); } Other.java000066400000000000000000000074311464555076100421160ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/notnullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.notnullmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; public class Other { /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to root types of local variables. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void localVariables() { // test:name:Nullable local variable object // test:irrelevant-annotation:Nullable @Nullable Object n; // test:name:NonNull local variable object // test:irrelevant-annotation:NonNull @NonNull Object r; // test:name:Nullable local variable array // test:irrelevant-annotation:Nullable Object @Nullable [] nArray; // test:name:NonNull local variable array // test:irrelevant-annotation:NonNull Object @NonNull [] rArray; } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to catch parameter types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void catchParameters() { try { // test:name:Nullable exception parameter // test:irrelevant-annotation:Nullable } catch (@Nullable RuntimeException e) { } try { // test:name:NonNull exception parameter // test:irrelevant-annotation:NonNull } catch (@NonNull RuntimeException e) { } try { } catch (RuntimeException e) { // test:name:Intrinsically NonNull exception parameter cannot be assigned null // test:cannot-convert:null? to RuntimeException! e = null; } } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to try-with-resources parameter types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void tryWithResourcesParameters() throws Exception { // test:name:Nullable try-with-resources // test:irrelevant-annotation:Nullable try (@Nullable AutoCloseable a = () -> {}) {} // test:name:NonNull try-with-resources // test:irrelevant-annotation:NonNull try (@Nullable AutoCloseable a = () -> {}) {} } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to thrown types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ interface ExceptionTypes { // test:name:Nullable exception type // test:irrelevant-annotation:Nullable void throwsN() throws @Nullable Exception; // test:name:NonNull exception type // test:irrelevant-annotation:NonNulll void throwsR() throws @NonNull Exception; } } nullmarked/000077500000000000000000000000001464555076100374445ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotationsAnnotatedTypeParameters.java000066400000000000000000000060171464555076100451160ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.nullmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when applied * to type parameters themselves (as opposed to their bounds). * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ public interface AnnotatedTypeParameters { // test:name:Nullable on simple type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T> void nParameter(); // test:name:NonNull on simple type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T> void rParameter(); // test:name:Nullable on bounded type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T extends Object> void nParameterWithBound(); // test:name:NonNull on bounded type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T extends Object> void rParameterWithBound(); // test:name:NonNull on annotated-bounded type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T extends @Nullable Object> void rParameterWithNBound(); // test:name:Nullable on annotated-bounded type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T extends @NonNull Object> void nParameterWithRBound(); // test:name:Nullable on simple type parameter on class // test:irrelevant-annotation:Nullable interface NParameter<@Nullable T> {} // test:name:NonNull on simple type parameter on class // test:irrelevant-annotation:NonNull interface RParameter<@NonNull T> {} // test:name:Nullable on bounded type parameter on class // test:irrelevant-annotation:Nullable interface NParameterWithBound<@Nullable T extends Object> {} // test:name:NonNull on bounded type parameter on class // test:irrelevant-annotation:NonNull interface RParameterWithBound<@NonNull T extends Object> {} // test:name:NonNull on annotated-bounded type parameter on class // test:irrelevant-annotation:NonNull interface RParameterWithNBound<@NonNull T extends @Nullable Object> {} // test:name:Nullable on annotated-bounded type parameter on class // test:irrelevant-annotation:Nullable interface NParameterWithRBound<@Nullable T extends @NonNull Object> {} } AnnotatedWildcards.java000066400000000000000000000040431464555076100440620ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.nullmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; import org.jspecify.conformance.deps.nullmarked.NHolder; /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when applied * to wildcards themselves (as opposed to their bounds). * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ public interface AnnotatedWildcards { // test:name:Nullable on unbounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ?> nWildcard(); // test:name:NonNull on unbounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ?> rWildcard(); // test:name:Nullable on bounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ? extends Object> nWildcardWithBound(); // test:name:NonNull on bounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ? extends Object> rWildcardWithBound(); // test:name:NonNull on annotated-bounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ? extends @Nullable Object> rWildcardWithNBound(); // test:name:Nullable on annotated-bounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ? extends @NonNull Object> nWildcardWithRBound(); } Other.java000066400000000000000000000074261464555076100414010ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.nullmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; public class Other { /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to root types of local variables. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void localVariables() { // test:name:Nullable local variable object // test:irrelevant-annotation:Nullable @Nullable Object n; // test:name:NonNull local variable object // test:irrelevant-annotation:NonNull @NonNull Object r; // test:name:Nullable local variable array // test:irrelevant-annotation:Nullable Object @Nullable [] nArray; // test:name:NonNull local variable array // test:irrelevant-annotation:NonNull Object @NonNull [] rArray; } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to catch parameter types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void catchParameters() { try { // test:name:Nullable exception parameter // test:irrelevant-annotation:Nullable } catch (@Nullable RuntimeException e) { } try { // test:name:NonNull exception parameter // test:irrelevant-annotation:NonNull } catch (@NonNull RuntimeException e) { } try { } catch (RuntimeException e) { // test:name:Intrinsically NonNull exception parameter cannot be assigned null // test:cannot-convert:null? to RuntimeException! e = null; } } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to try-with-resources parameter types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void tryWithResourcesParameters() throws Exception { // test:name:Nullable try-with-resources // test:irrelevant-annotation:Nullable try (@Nullable AutoCloseable a = () -> {}) {} // test:name:NonNull try-with-resources // test:irrelevant-annotation:NonNull try (@Nullable AutoCloseable a = () -> {}) {} } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to thrown types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ interface ExceptionTypes { // test:name:Nullable exception type // test:irrelevant-annotation:Nullable void throwsN() throws @Nullable Exception; // test:name:NonNull exception type // test:irrelevant-annotation:NonNulll void throwsR() throws @NonNull Exception; } } package-info.java000066400000000000000000000013401464555076100426310ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ @NullMarked package org.jspecify.conformance.tests.irrelevantannotations.nullmarked; import org.jspecify.annotations.NullMarked; nullunmarked/000077500000000000000000000000001464555076100400075ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotationsAnnotatedTypeParameters.java000066400000000000000000000061151464555076100454600ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullunmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.nullunmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullUnmarked; import org.jspecify.annotations.Nullable; /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when applied * to type parameters themselves (as opposed to their bounds). * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ @NullUnmarked public interface AnnotatedTypeParameters { // test:name:Nullable on simple type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T> void nParameter(); // test:name:NonNull on simple type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T> void rParameter(); // test:name:Nullable on bounded type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T extends Object> void nParameterWithBound(); // test:name:NonNull on bounded type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T extends Object> void rParameterWithBound(); // test:name:NonNull on annotated-bounded type parameter on method // test:irrelevant-annotation:NonNull <@NonNull T extends @Nullable Object> void rParameterWithNBound(); // test:name:Nullable on annotated-bounded type parameter on method // test:irrelevant-annotation:Nullable <@Nullable T extends @NonNull Object> void nParameterWithRBound(); // test:name:Nullable on simple type parameter on class // test:irrelevant-annotation:Nullable interface NParameter<@Nullable T> {} // test:name:NonNull on simple type parameter on class // test:irrelevant-annotation:NonNull interface RParameter<@NonNull T> {} // test:name:Nullable on bounded type parameter on class // test:irrelevant-annotation:Nullable interface NParameterWithBound<@Nullable T extends Object> {} // test:name:NonNull on bounded type parameter on class // test:irrelevant-annotation:NonNull interface RParameterWithBound<@NonNull T extends Object> {} // test:name:NonNull on annotated-bounded type parameter on class // test:irrelevant-annotation:NonNull interface RParameterWithNBound<@NonNull T extends @Nullable Object> {} // test:name:Nullable on annotated-bounded type parameter on class // test:irrelevant-annotation:Nullable interface NParameterWithRBound<@Nullable T extends @NonNull Object> {} } AnnotatedWildcards.java000066400000000000000000000041411464555076100444240ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullunmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.nullunmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullUnmarked; import org.jspecify.annotations.Nullable; import org.jspecify.conformance.deps.nullmarked.NHolder; /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when applied * to wildcards themselves (as opposed to their bounds). * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ @NullUnmarked public interface AnnotatedWildcards { // test:name:Nullable on unbounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ?> nWildcard(); // test:name:NonNull on unbounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ?> rWildcard(); // test:name:Nullable on bounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ? extends Object> nWildcardWithBound(); // test:name:NonNull on bounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ? extends Object> rWildcardWithBound(); // test:name:NonNull on annotated-bounded wildcard // test:irrelevant-annotation:NonNull NHolder<@NonNull ? extends @Nullable Object> rWildcardWithNBound(); // test:name:Nullable on annotated-bounded wildcard // test:irrelevant-annotation:Nullable NHolder<@Nullable ? extends @NonNull Object> nWildcardWithRBound(); } Other.java000066400000000000000000000075241464555076100417430ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullunmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.tests.irrelevantannotations.nullunmarked; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullUnmarked; import org.jspecify.annotations.Nullable; @NullUnmarked public class Other { /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to root types of local variables. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void localVariables() { // test:name:Nullable local variable object // test:irrelevant-annotation:Nullable @Nullable Object n; // test:name:NonNull local variable object // test:irrelevant-annotation:NonNull @NonNull Object r; // test:name:Nullable local variable array // test:irrelevant-annotation:Nullable Object @Nullable [] nArray; // test:name:NonNull local variable array // test:irrelevant-annotation:NonNull Object @NonNull [] rArray; } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to catch parameter types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void catchParameters() { try { // test:name:Nullable exception parameter // test:irrelevant-annotation:Nullable } catch (@Nullable RuntimeException e) { } try { // test:name:NonNull exception parameter // test:irrelevant-annotation:NonNull } catch (@NonNull RuntimeException e) { } try { } catch (RuntimeException e) { // test:name:Intrinsically NonNull exception parameter cannot be assigned null // test:cannot-convert:null? to RuntimeException! e = null; } } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to try-with-resources parameter types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ void tryWithResourcesParameters() throws Exception { // test:name:Nullable try-with-resources // test:irrelevant-annotation:Nullable try (@Nullable AutoCloseable a = () -> {}) {} // test:name:NonNull try-with-resources // test:irrelevant-annotation:NonNull try (@Nullable AutoCloseable a = () -> {}) {} } /** * {@link Nullable @Nullable} and {@link NonNull @NonNull} annotations are unrecognized when * applied to thrown types. * * @see Recognized * locations for type-use annotations in the JSpecify specification. */ interface ExceptionTypes { // test:name:Nullable exception type // test:irrelevant-annotation:Nullable void throwsN() throws @Nullable Exception; // test:name:NonNull exception type // test:irrelevant-annotation:NonNulll void throwsR() throws @NonNull Exception; } } package-info.java000066400000000000000000000015051464555076100431770ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullunmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ // Note that this is on the nullunmarked package so that individual classes can use @NullUnmarked. @NullMarked package org.jspecify.conformance.tests.irrelevantannotations.nullunmarked; import org.jspecify.annotations.NullMarked; jspecify-1.0.0/conformance-tests/src/deps/000077500000000000000000000000001464555076100205155ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/000077500000000000000000000000001464555076100214365ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/org/000077500000000000000000000000001464555076100222255ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/org/jspecify/000077500000000000000000000000001464555076100240415ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/org/jspecify/conformance/000077500000000000000000000000001464555076100263335ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/org/jspecify/conformance/deps/000077500000000000000000000000001464555076100272665ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/org/jspecify/conformance/deps/Dep.java000066400000000000000000000013511464555076100306410ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.deps; /** This is here only to prove that assertions can refer to classes in deps. */ public class Dep {} jspecify-1.0.0/conformance-tests/src/deps/java/org/jspecify/conformance/deps/nullmarked/000077500000000000000000000000001464555076100314245ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/org/jspecify/conformance/deps/nullmarked/NHolder.java000066400000000000000000000013631464555076100336250ustar00rootroot00000000000000/* * Copyright 2024 The JSpecify Authors. * * 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. */ package org.jspecify.conformance.deps.nullmarked; import org.jspecify.annotations.Nullable; public interface NHolder {} package-info.java000066400000000000000000000013101464555076100345270ustar00rootroot00000000000000jspecify-1.0.0/conformance-tests/src/deps/java/org/jspecify/conformance/deps/nullmarked/* * Copyright 2024 The JSpecify Authors. * * 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. */ @NullMarked package org.jspecify.conformance.deps.nullmarked; import org.jspecify.annotations.NullMarked; jspecify-1.0.0/docs/000077500000000000000000000000001464555076100142715ustar00rootroot00000000000000jspecify-1.0.0/docs/.gitignore000066400000000000000000000000271464555076100162600ustar00rootroot00000000000000_build* locale/**/*.mo jspecify-1.0.0/docs/README.md000066400000000000000000000016531464555076100155550ustar00rootroot00000000000000# Website This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. The instructions bellow assume that you're inside `docs/` directory. ### Installation ``` $ npm install ``` ### Local Development ``` $ npm start ``` This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. ### Build ``` $ npm run build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. ### Deployment The site is built and published to GitHub Pages via GitHub Actions. ### Manual Deployment Using SSH: ``` $ USE_SSH=true yarn deploy ``` Not using SSH: ``` $ GIT_USER= yarn deploy ``` If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. jspecify-1.0.0/docs/babel.config.js000066400000000000000000000012671464555076100171460ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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. */ module.exports = { presets: [require.resolve('@docusaurus/core/lib/babel/preset')], }; jspecify-1.0.0/docs/blog/000077500000000000000000000000001464555076100152145ustar00rootroot00000000000000jspecify-1.0.0/docs/blog/2022-08-07-welcome.md000066400000000000000000000007021464555076100202240ustar00rootroot00000000000000--- slug: welcome title: Welcome to the JSpecify Blog authors: [artempianykh] tags: [] --- Welcome to JSpecify's blog and thank you for your interest in static analysis for Java! There's not much content in the blog at the moment but do stay tuned. We're planning to publish a series of posts about the project and its future very soon. In the meantime, make sure to check out the [User Guide](/docs/user-guide) and the [Specification](/docs/spec). jspecify-1.0.0/docs/blog/authors.yml000066400000000000000000000002341464555076100174230ustar00rootroot00000000000000artempianykh: name: Artem Pianykh title: Static Analysis @ Meta url: https://github.com/artempyanykh image_url: https://github.com/artempyanykh.png jspecify-1.0.0/docs/docs/000077500000000000000000000000001464555076100152215ustar00rootroot00000000000000jspecify-1.0.0/docs/docs/spec.md000066400000000000000000001351061464555076100165030ustar00rootroot00000000000000--- title: Nullness Specification (draft) --- # Nullness Specification (draft) This document is a draft specification for the precise semantics of our set of annotations for nullness analysis. :::note Advice to readers (non-normative) The primary audience for this document is the authors of analysis tools. Some very advanced users might find it interesting. But it would make a very poor introduction for anyone else; instead see our **[Start Here](/docs/start-here) page**. ::: :::note Status of this specification This document is current as of JSpecify **0.2.0**, but does not reflect several design changes between then and **0.3.0**. ::: -------------------------------------------------------------------------------- ### The word "nullable" In this doc, we aim not to refer to whether a type "is nullable." Instead, we draw some distinctions, creating at least four kinds of "Is it nullable?" questions we can ask for any given type usage: 1. Does `@Nullable` appear directly on that type usage? 2. What is the [nullness operator] of that type usage? 3. Is it reasonable to assume that `null` won't come "out" of it? 4. Is it reasonable to assume that `null` can't be put "in" to it? ### The scope of this spec Currently, this spec does not address *when* tools must apply any part of the spec. For example, it does not state when tools must check that the [subtyping] relation holds. We anticipate that tools will typically apply parts of this spec in the same cases that they (or `javac`) already apply the corresponding parts of the Java Language Specification. For example, if code contains the parameterized type `List<@Nullable Foo>`, we anticipate that tools will check that `@Nullable Foo` is a subtype of the bound of the type parameter of `List`. However, this is up to tool authors, who may have reasons to take a different approach. For example: - Java [places some restrictions that aren't necessary for soundness][#49], and it [is lenient in at least one way that can lead to runtime errors][#65]. - JSpecify annotations can be used even by tools that are not "nullness checkers" at all. For example, a tool that lists the members of an API could show the nullness of each type in the API, without any checking that those types are "correct." - Even when a tool is a "nullness checker," it might be written for another language, like Kotlin, with its own rules for when to perform type checks. Or the tool might target a future version of Java whose language features would not be covered by this version of this spec. Note also that this spec covers only nullness information *from JSpecify annotations*. Tools may have additional sources of information. For example, a tool may recognize additional annotations. Or a tool may omit the concept of `UNSPECIFIED` and apply a policy that type usages like `Object` are always non-nullable. ### That's all! On to the spec. -------------------------------------------------------------------------------- ## Normative and non-normative sections This document contains some non-normative comments to emphasize points or to anticipate likely questions. Those comments are set off as block quotes. > This is an example of a non-normative comment. This document also links to other documents. Those documents are non-normative, except for when we link to the Java Language Specification to defer to its rules. ## Relationship between this spec and JLS {#concept-references} When a rule in this spec refers to any concept that is defined in this spec (for example, [substitution] or [containment]), apply this spec's definition (as opposed to other definitions, such as the ones in the Java Language Specification (JLS)). Additionally, when a rule in this spec refers to a JLS rule that in turn refers to a concept that is defined in this spec, likewise apply this spec's definition. In particular, when a JLS rule refers to types, apply this spec's definition of [augmented types] \(as opposed to [base types]). ## Base type A *base type* is a type as defined in [JLS 4]. > JLS 4 does not consider a type-use annotation to be a part of the type it > annotates, so neither does our concept of "base type." ## Type components A *type component* of a given type is a type that transitively forms some part of that type. Specifically, a type component is one of the following: - a non-wildcard type argument - a wildcard bound - an array component type - an enclosing type - an element of an intersection type - the entire type ## Nullness operator A nullness operator is one of 4 values: - `UNION_NULL` - `NO_CHANGE` - `UNSPECIFIED` - `MINUS_NULL` > The informal meaning of the operators is: > > - `UNION_NULL`: This is the operator produced by putting `@Nullable` on a > type usage. > - The type usage `String UNION_NULL` includes `"a"`, `"b"`, `"ab"`, > etc., plus `null`. > - The type-variable usage `T UNION_NULL` includes all members of `T`, > plus `null` if it wasn't already included. > - `NO_CHANGE`: This is the operator produced by *not* putting `@Nullable` on > a type usage (aside from the exception discussed under `UNSPECIFIED` > below). > - The type usage `String NO_CHANGE` includes `"a"`, `"b"`, `"ab"`, etc., > without including `null`. > - The type-variable usage `T NO_CHANGE` includes exactly the members of > `T`: If `null` was a member of `T`, then it's a member of `T > NO_CHANGE`. If it was not a member of `T`, then it is not a member of > `T NO_CHANGE`. > - One way to conceptualize this is that `String NO_CHANGE` means > "non-null `String`" but that `T NO_CHANGE` means "nullness comes from > the value of `T`." > - `UNSPECIFIED`: This is the operator produced by not putting `@Nullable` on > a type usage *in code that is outside a [null-marked scope]*. Roughly, it > is the operator assigned to "completely unannotated code." > - The type usage `String UNSPECIFIED` includes `"a"`, `"b"`, `"ab"`, > etc., but whether `null` should be included is not specified. > - The type-variable usage `T UNSPECIFIED` includes all members of `T`. > But whether `null` should be added to the set (if it isn't already) > is not specified. > - `MINUS_NULL`: This operator not only does not *add* `null` but also > actively *removes* it from a type-variable usage that might otherwise > include it. > - The type usage `String MINUS_NULL` includes `"a"`, `"b"`, `"ab"`, > etc., without including `null`. (This is equivalent to `String > NO_CHANGE`.) > - The type-variable usage `T MINUS_NULL` includes all members of `T` > *except* for `null`. (This is equivalent to `T NO_CHANGE` unless > `null` was a member of `T`.) ## Augmented type An augmented type consists of a [base type] and a [nullness operator] corresponding to *each* of its [type components]. > Arguably, an augmented type with nullness operator `UNSPECIFIED` is better > understood not as representing "a type" but as representing a *lack* of the > nullness portion of the type. For our purposes, base types (and thus augmented types) include not just class and interface types, array types, and type variables but also [intersection types] and the null type. > This spec aims to define rules for augmented types compatible with those that > the JLS defines for base types. > > Accordingly, in almost all cases, this spec agrees with the JLS's rules when > specifying what *base* types appear in a piece of code. It makes an exception > for ["Bound of an unbounded wildcard,"](#unbounded-wildcard) for which it > specifies a bound of `Object` that the JLS does not specify. When this spec uses capital letters, they refer to augmented types (unless otherwise noted). This is in contrast to the JLS, which typically uses them to refer to base types. When this spec refers to "the nullness operator of" a type `T`, it refers specifically to the nullness operator of the type component that is the entire type `T`, without reference to the nullness operator of any other type that is a component of `T` or has `T` as a component. > For example, "the nullness operator of `List`" refers to whether the > list itself may be `null`, not whether its elements may be. ## Details common to all annotations For all named annotations referred to by this spec: - The package name is `org.jspecify.nullness`. \[[#260]\] - The Java module name is `org.jspecify`. \[[#181]\] - The Maven artifact is `org.jspecify:jspecify`. \[[#181]\] All annotations have runtime retention. \[[#28]\] None of the annotations are marked [repeatable]. ## The type-use annotation We provide a parameterless type-use annotation called `@Nullable`. ### Recognized locations for type-use annotations A location is a *recognized* location for our type-use annotation in the circumstances detailed below. This spec does not define semantics for annotations in other locations. > For now, we've chosen to restrict ourselves to API locations for which tools > mostly agree on what it means for a type in that location to be `@Nullable`. > > When analyzing source code, tools are encouraged to offer an option to issue > an error for an annotation in an unrecognized location (unless they define > semantics for that location). Tools are especially encouraged to issue an > error for an annotation in a location that is "intrinsically non-nullable" > (defined below). > > When reading *bytecode*, however, tools may be best off ignoring an annotation > in an unrecognized location (again, unless they define semantics for that > location). The following locations are recognized except when overruled by one of the exceptions in the subsequent sections: \[[#17]\] - return type of a method - formal parameter type of a method or constructor, as defined in [JLS 8.4.1] > This excludes the receiver parameter. - field type - type parameter upper bound \[[#60]\] - non-wildcard type argument - wildcard bound - array component type - type used in a variadic parameter declaration However, any location above is unrecognized if it matches either of the following cases: \[[#17]\] > We refer to these cases (and some other cases below) as "intrinsically > non-nullable." - a type usage of a value type (currently, the 8 predefined primitive types) - the outer type that qualifies an inner type > For example, the annotation in `@Nullable Foo.Bar` is in an unrecognized > location: Java syntax attaches it to the outer type `Foo`. > > (Note that `@Nullable Foo.Bar` is a *Java* syntax error when `Bar` is a > *static* type. If `Bar` is a non-static type, then Java permits the code. > So JSpecify tools have the oppotunity to reject it, given that the author > probably intended `Foo.@Nullable Bar`.) > Every outer type is intrinsically non-nullable because every instance of > an inner class has an associated instance of the outer class. Additionally, any location above is unrecognized if it makes up *any [type component]* of a type in the following locations: \[[#17]\] > These locations all fit under the umbrella of "implementation code." > Implementation code may use types that contain type arguments, wildcard > bounds, and array component types, which would be recognized locations if not > for the exceptions defined by this section. - a local variable type - the type in a cast or `instanceof` expression - an array or object creation expression (including via a member reference) - an explicit type argument supplied to a generic method or constructor (including via a member reference) or to an instance creation expression for a generic class > In practice, we anticipate that tools will treat types (and their annotations) > in *most* of the above locations much like they treat types in other > locations. Still, this spec does not concern itself with implementation code: > We believe that the most important domain for us to focus on is that of APIs. All locations that are not explicitly listed as recognized are unrecognized. > Other notable unrecognized annotations include: \[[#17]\] > > Some additional intrinsically non-nullable locations: > > - supertype in a class declaration > - thrown exception type > - exception parameter type > - enum constant declaration > - receiver parameter type > > Some other locations that individual tools are more likely to assign semantics > to: > > - a class declaration \[[#7]\]: For example, the annotation in `public > @Nullable class Foo {}` is in an unrecognized location. > - a type-parameter declaration or a wildcard *itself* \[[#19], [#31]\] > - any [type component] of a receiver parameter type \[[#157]\] > > But note that types "inside" some of these locations can still be recognized, > such as a *type argument* of a supertype. ## The declaration annotation We provide a single parameterless declaration annotation called `@NullMarked`. \[[#5], [#87]\] ### Recognized locations for declaration annotations Our declaration annotation is specified to be *recognized* when applied to the locations listed below: - A *named* class. - A package. \[[#34]\] - A module. \[[#34]\] > *Not* a method \[[#43]\], constructor \[[#43]\], or field \[[#50]\]. ## Null-marked scope To determine whether a type usage appears in a null-marked scope: Look for a `@NullMarked` annotation on any of the scopes enclosing the type usage. Class members are enclosed by classes, which may be enclosed by other class members or classes. and top-level classes are enclosed by packages, which may be enclosed by modules. > Packages are *not* enclosed by "parent" packages. > This definition of "enclosing" likely matches > [the definition in the Java compiler API](https://docs.oracle.com/en/java/javase/14/docs/api/java.compiler/javax/lang/model/element/Element.html#getEnclosingElement\(\)). If one of those scopes is directly annotated with `@NullMarked`, then the type usage is in a null-marked scope. Otherwise, it is not. ## Augmented type of a type usage appearing in code {#augmented-type-of-usage} For most type usages in source code or bytecode on which JSpecify nullness annotations are [recognized], this section defines how to determine their [augmented types]. Note, however, that rules for specific cases below take precedence over the general rule here. Because the JLS already has rules for determining the [base type] for a type usage, this section covers only how to determine its [nullness operator]. To determine the nullness operator, apply the following rules in order. Once one condition is met, skip the remaining conditions. - If the type usage is annotated with `@Nullable`, its nullness operator is `UNION_NULL`. - If the type usage appears in a [null-marked scope], its nullness operator is `NO_CHANGE`. - Its nullness operator is `UNSPECIFIED`. > The choice of nullness operator is *not* affected by any nullness operator > that appears in a corresponding location in a supertype. For example, if one > type declares a method whose return type is annotated `@Nullable`, and if > another type overrides that method but does not declare the return type as > `@Nullable`, then the override's return type will *not* have nullness operator > `UNION_NULL`. > The rules here never produce the fourth nullness operator, `MINUS_NULL`. > However, if tool authors prefer, they can safely produce `MINUS_NULL` in any > case in which it is equivalent to `NO_CHANGE`. For example, there is no > difference between `String NO_CHANGE` and `String MINUS_NULL`. > So why does `MINUS_NULL` exist at all? It does appear later in this spec in > the section on [substitution]. However, its main purpose is to provide tools > with a way to represent the nullness of certain expressions in implementation > code: Consider `ArrayList`. `ArrayList` supports null elements, so the > class has to handle the possibility that any expression of type `E` may be > null. However, if implementation code contains the statement `if (e != null) { > ... }`, then tools can assume that `e` is non-null inside. The purpose of > `MINUS_NULL` is to represent that such an expression is known not to be null, > even though its base type `E` suggests otherwise. ## Augmented type of an intersection type {#intersection-types} > Technically speaking, the JLS does not define syntax for an intersection type. > Instead, it defines a syntax for type parameters and casts that supports > multiple types. Then the intersection type is derived from those. Intersection > types can also arise from operations like [capture conversion]. See [JLS 4.9]. > > One result of this is that it's never possible for a programmer to write an > annotation "on an intersection type." This spec assigns a [nullness operator] to each individual element of an intersection type, following our normal rules for type usages. It also assigns a nullness operator to the intersection type as a whole. The nullness operator of the type as a whole is always `NO_CHANGE`. > This lets us provide, for every [base type], a rule for computing its > [augmented type]. But we require `NO_CHANGE` so as to avoid questions like > whether "a `UNION_NULL` intersection type whose members are `Foo UNION_NULL` > and `Bar UNION_NULL`" is a subtype of "a `NO_CHANGE` intersection type with > those same members." Plus, it would be difficult for tools to output the > nullness operator of an intersection type in a human-readable way. > To avoid ever creating an intersection type with a nullness operator other > than `NO_CHANGE`, we define special handling for intersection types under > ["Applying a nullness operator to an augmented type."][applying operator] ## Bound of an "unbounded" wildcard {#unbounded-wildcard} In source, an unbounded wildcard is written as ``. This section does *not* apply to ``, even though that is often equivalent to ``. > See [JLS 4.5.1]. In bytecode, such a wildcard is represented as a wildcard type with an empty list of upper bounds and an empty list of lower bounds. This section does *not* apply to a wildcard with any bounds in either list, even a sole upper bound of `Object`. > For a wildcard with an explicit bound of `Object` (that is, ` Object>`, perhaps with an annotation on `Object`), instead apply > [the normal rules](#augmented-type-of-usage) for the explicit bound type. If an unbounded wildcard appears in a [null-marked scope], then it has a single upper bound whose [base type] is `Object` and whose [nullness operator] is `UNION_NULL`. If an unbounded wildcard appears outside a null-marked scope, then it has a single upper bound whose base type is `Object` and whose nullness operator is `UNSPECIFIED`. > In both cases, we specify a bound that does not exist in the source or > bytecode, deviating from the JLS. Because the base type of the bound is > `Object`, this should produce no user-visible differences except to tools that > implement JSpecify nullness analysis. Whenever a JLS rule refers specifically to ``, disregard it, and instead apply the rules for ``, where `T` has a base type of `Object` and the nullness operator defined by this section. ## Bound of an `Object`-bounded type parameter {#object-bounded-type-parameter} In source, an `Object`-bounded type parameter can be writen in either of 2 ways: - `` - `` with no JSpecify nullness type annotations on the bound > See [JLS 4.4]. In bytecode, `` and `` are both represented as a type parameter with a single upper bound, `Object`, and no JSpecify nullness type annotations on the bound. If an `Object`-bounded type parameter appears in a [null-marked scope], then its bound has a [base type] of `Object` and a [nullness operator] of `NO_CHANGE`. > Note that this gives `` a different bound than `` (though only in a > null-marked scope). If an `Object`-bounded type parameter appears outside a null-marked scope, then its bound has a base type of `Object` and a nullness operator of `UNSPECIFIED`. > All these rules match the behavior of > [our normal rules](#augmented-type-of-usage) for determining the > [augmented type] of the bound `Object`. The only "special" part is that we > consider the source code `` to have a bound of `Object`, just as it does > when compiled to bytecode. ## Augmented null types {#null-types} The JLS refers to "the null type." In this spec, we assign a [nullness operator] to all types, including the null type. This produces multiple null types: - the null [base type] with nullness operator `NO_CHANGE`: the "bottom"/"nothing" type used in [capture conversion] > No value has this type, not even `null` itself. - the null base type with nullness operator `MINUS_NULL` > This is equivalent to the previous type. Tools may use the 2 > interchangeably. - the null base type with nullness operator `UNION_NULL`: the type of the null reference - the null base type with nullness operator `UNSPECIFIED` > This may be relevant only in implementation code. ## Multiple "worlds" {#multiple-worlds} Some of the rules in this spec come in 2 versions: One version requires a property to hold "in all worlds," and the other requires it to hold only "in some world." Tool authors may choose to implement neither, either, or both versions of the rules. > Our goal is to allow tools and their users to choose their desired level of > strictness in the presence of `UNSPECIFIED`. The basic idea is that, every > time a tool encounters a type component with the nullness operator > `UNSPECIFIED`, it has the option to fork off 2 "worlds": 1 in which the > operator is `UNION_NULL` and 1 in which it is `NO_CHANGE`. > > In more detail: When tools lack a nullness specification for a type, they may > choose to assume that either of the resulting worlds may be the "correct" > specification. The all-worlds version of a rule, by requiring types to be > compatible in all possible worlds, holds that types are incompatible unless it > has enough information to prove they are compatible. The some-world version, > by requiring types to be compatible only in *some* world, holds that types are > compatible unless it has enough information to prove they are incompatible. > (By behaving "optimistically," the some-world version is much like Kotlin's > rules for "platform types.") > > Thus, a strict tool might choose to implement the all-worlds version of rules, > and a lenient tool might choose to implement the some-world version. Yet > another tool might implement both and let users select which rules to apply. > > Still another possibility is for a tool to implement both versions and to use > that to distinguish between "errors" and "warnings." Such a tool might always > first process code with the all-worlds version and then with the some-world > version. If the tools detects, say, an out-of-bounds type argument in both > cases, the tool would produce an error. But, if the tool detects such a > problem with the all-worlds version but not with the some-world version, the > tool would produce a warning. Under this scheme, a warning means roughly that > "There is some way that the code could be annotated that would produce an > error here." The main body of each section of the spec describes the all-worlds rule. If the some-world rule differs, the differences are explained at the end. > A small warning: To implement the full some-world rules, a tool must also > implement at least part of the all-worlds rules. Those rules are required as > part of [substitution]. ### Propagating how many worlds a relation must hold in {#propagating-multiple-worlds} When one rule in this spec refers to another, it refers to the same version of the rule. For example, when the rules for [containment] refer to the rules for [subtyping], the some-world containment relation refers to the some-world subtyping relation, and the all-worlds containment relation refers to the all-worlds subtyping relation. This meta-rule applies except when a rule refers explicitly to a particular version of another rule. ## Same type `S` and `T` are the same type if `S` is a [subtype] of `T` and `T` is a subtype of `S`. The same-type relation is *not* defined to be reflexive or transitive. > For more discussion of reflexive and transitive relations, see the comments > under [nullness subtyping]. ## Subtyping `A` is a subtype of `F` if both of the following conditions are met: - `A` is a [nullness subtype] of `F`. - `A` is a subtype of `F` according to the [nullness-delegating subtyping rules for Java]. > The first condition suffices for most cases. The second condition is necessary > only for types that have subcomponents --- namely, parameterized types and > arrays. And it essentially says "Check the first condition on subcomponents as > appropriate." ## Nullness subtyping `A` is a nullness subtype of `F` if any of the following conditions are met: > Nullness subtyping asks the question: If `A` includes `null`, does `F` also > include `null`? There are 4 cases in which this is true, 2 easy and 2 hard: - `F` is [null-inclusive under every parameterization]. > This is the first easy case: `F` always includes `null`. - `A` is [null-exclusive under every parameterization]. > This is the second easy case: `A` never includes `null`. - `A` has a [nullness-subtype-establishing path] to any type whose base type is the same as the base type of `F`, and `F` does *not* have [nullness operator] `MINUS_NULL`. > This is the first hard case: A given type-variable usage does not > necessarily always include `null`, nor does it necessarily always exclude > `null`. (For example, consider a usage of `E` inside `ArrayList`. > `ArrayList` may be instantiated as either an `ArrayList<@Nullable String>` > or an `ArrayList`.) > > Subtyping questions for type-variable usages are more complex: `E` is a > nullness subtype of `E`; `@Nullable E` is not. Similarly, if ` E>`, then `F` is a nullness subtype of `E`. But if ` E>`, it is not. - `F` is a type-variable usage that meets *both* of the following conditions: - It does *not* have nullness operator `MINUS_NULL`. - `A` is a nullness subtype of its lower bound. > This is the second hard case: It covers type variables that are introduced > by capture conversion of `? super` wildcards. > > In short, whether you have a `Predicate`, a `Predicate super @Nullable String>`, or unannotated code that doesn't specify the > nullness operator for the bound, you can always pass its `test` method a > `String`. (If you want to pass a `@Nullable String`, then you'll need for > the bound to be [null-inclusive under every parameterization]. The > existence of the null-inclusiveness rule frees this current rule from > having to cover that case.) > A further level of complexity in all this is `UNSPECIFIED`. For example, in > the [all-worlds] version of the following rules, a type with nullness operator > `UNSPECIFIED` can be both null-_inclusive_ under every parameterization and > null-_exclusive_ under every parameterization. Nullness subtyping (and thus subtyping itself) is *not* defined to be reflexive or transitive. > If we defined nullness subtyping to be reflexive, then `String UNSPECIFIED` > would be a subtype of `String UNSPECIFIED`, even under the [all-worlds] rules. > In other words, we'd be saying that unannotated code is always free from > nullness errors. That is clearly false. (Nevertheless, lenient tools will > choose not to issue errors for such code. They can do this by implementing the > [some-world] rules.) > > If we defined nullness subtyping to be transitive, then `String UNION_NULL` > would be a subtype of `String NO_CHANGE` under the some-world rules. That > would happen because of a chain of subtyping rules: > > - `String UNION_NULL` is a subtype of `String UNSPECIFIED`. > > - `String UNSPECIFIED` is a subtype of `String NO_CHANGE`. > > Therefore, `String UNION_NULL` is a subtype of `String NO_CHANGE`. > > Yes, it's pretty terrible for something called "subtyping" not to be reflexive > or transitive. A more accurate name for this concept would be "consistent," a > term used in gradual typing. However, we use "subtyping" anyway. In our > defense, we need to name multiple concepts, including not just subtyping but > also the [same-type] relation and [containment]. If we were to coin a new term > for each, tool authors would need to mentally map between those terms and the > analogous Java terms. (Still, yes: Feel free to read terms like "subtyping" as > if they hvae scare quotes around them.) > > Subtyping does end up being transitive when the relation is required to hold > in all worlds. And it does end up being reflexive when the relation is > required to hold only in [some world]. We don't state those properties as > rules for 2 reasons: First, they arise naturally from the definitions. Second, > we don't want to suggest that subtyping is reflexive and transitive under both > versions of the rule. Contrast this with our [nullness-delegating subtyping] rules and [containment] rules: Each of those is defined as a transitive closure. However, this is incorrect, and we should fix it: Transitivity causes the same problem there as it does here: `List` ends up as a subtype of `List` because of a chain of subtyping rules that uses `String UNSPECIFIED` as part of the intermediate step. Luckily, tool authors that set out to implement transitivity for these two rules are very unlikely to write code that "notices" this chain. So, in practice, users are likely to see the "mostly transitive" behavior that we intend, even if we haven't found a way to formally specify it yet. ## Null-inclusive under every parameterization A type is null-inclusive under every parameterization if it meets any of the following conditions: - Its [nullness operator] is `UNION_NULL`. > This is the simplest part of the simplest case: A type usage always > includes `null` if it's annotated with `@Nullable`. - It is an [intersection type] whose elements all are null-inclusive under every parameterization. - It is a type variable that meets *both* of the following conditions: - It does *not* have nullness operator `MINUS_NULL`. - Its lower bound is null-inclusive under every parameterization. > This third case is probably irrelevant in practice: It covers `? super > @Nullable Foo`, which is already covered by the rules for > [nullness subtyping]. It's included here in case some tool has reason to > check whether a type is null-inclusive under every parameterization > *outside* of a check for nullness subtyping. **Some-world version:** The rule is the same except that the requirement for "`UNION_NULL`" is loosened to "`UNION_NULL` or `UNSPECIFIED`." > That is: It's possible that any type usage in unannotated code "ought to be" > annotated with `@Nullable`. ## Null-exclusive under every parameterization > This is a straightforward concept ("never includes `null`"), but it's not as > simple to implement as the null-_inclusive_ rule was. This null-_exclusive_ > rule has to cover cases like `String`, `E` (where ``), and > `E` (where `` but nearby code has performed a null > check on the expression). The case of `` is an example of > why the following rule requires looking for a "path." A type is null-exclusive under every parameterization if it has a [nullness-subtype-establishing path] to either of the following: - any type whose [nullness operator] is `MINUS_NULL` - any augmented class or array type > This rule refers specifically to a "class or array type," as distinct from > other types like type variables and [intersection types]. > When code dereferences an expression, we anticipate that tools will check > whether the expression is null-exclusive under every parameterization. ## Nullness-subtype-establishing path > Note that this definition is used both by the definition of > [null-exclusive under every parameterization] and by the third condition in > the definition [nullness subtyping] itself (the "type-variable case"). `A` has a nullness-subtype-establishing path to `F` if both of the following hold: - `A` has [nullness operator] `NO_CHANGE` or `MINUS_NULL`. - There is a path from `A` to `F` through [nullness-subtype-establishing direct-supertype edges]. > The path may be empty. That is, `A` has a nullness-subtype-establishing > path to itself --- as long as it has one of the required nullness > operators. **Some-world version:** The rules are the same except that the requirement for "`NO_CHANGE` or `MINUS_NULL`" is loosened to "`NO_CHANGE`, `MINUS_NULL`, or `UNSPECIFIED`." ## Nullness-subtype-establishing direct-supertype edges > This section defines the supertypes for a given type --- but limited to those > that fill the gaps in our nullness checking of "top-level" types. For example, > there's no need for the rules to reflect that `String NO_CHANGE` extends > `Object NO_CHANGE`: If we've established that a type has a path to `String > NO_CHANGE`, then we already know that it's > [null-exclusive under every parameterization], based on the rules above, and > that's enough to prove subtyping. And if we *haven't* established that, then > the `String`-`Object` edge isn't going to change that. > > Thus, the rules here are restricted to type variables and intersection types, > whose supertypes may have nullness annotations. `T` has nullness-subtype-establishing direct-supertype edges to the following: - if `T` is an augmented [intersection type]: all the intersection type's elements whose [nullness operator] is `NO_CHANGE` or `MINUS_NULL` - if `T` is an augmented type variable: all the corresponding type parameter's upper bounds whose nullness operator is `NO_CHANGE` or `MINUS_NULL` - otherwise: no nodes **Some-world version:** The rules are the same except that the requirements for "`NO_CHANGE` or `MINUS_NULL`" are loosened to "`NO_CHANGE`, `MINUS_NULL`, or `UNSPECIFIED`." ## Nullness-delegating subtyping rules for Java {#nullness-delegating-subtyping} > Recall that this rule exists to handle subcomponents of types --- namely, type > arguments and array component types. It essentially says "Check nullness > subtyping for subcomponents as appropriate." The Java subtyping rules are defined in [JLS 4.10]. (Each rule takes a type as input and produces zero or more direct supertypes as outputs.) We add to them as follows: - [As always](#concept-references), interpret the Java rules as operating on [augmented types], not [base types]. This raises the question of *how* to extend these particular rules to operate on augmented types. The answer has two parts: - The first part of the answer applies only to the nullness operator *"of the type."* ([As always](#augmented-type), this means the nullness operator of the type component that is the entire type.) And the first part of the answer is: No matter what nullness operator the input augmented type has, the rules still apply, and they still produce the same direct supertypes. > Thanks to that rule, the nullness operator of any *output* type is > never read by the subtyping rules. So, when computing output types, tools may produce them with *any* nullness operator. > Essentially, this rule says that the top-level types do no matter: > They have already been checked by the [nullness subtyping] check. > > For simplicity, we recommend producing a nullness operator of > `NO_CHANGE`: That operator is valid for all types, including > [intersection types]. - The nullness operators of *subcomponents* of the augmented types *do* matter. For example, some Java rules produce subtypes only if subcomponents meet certain requirements. [As always](#concept-references), check those requirements by applying *this spec's* definitions. > Those definitions (like [containment]) refer back to definitions (like > [nullness subtyping]) that use the nullness operators of the > subcomponents in question. - When the Java array rules require one type to be a *direct* supertype of another, consider the direct supertypes of `T` to be *every* type that `T` is a [subtype] of. ## Containment The Java rules are defined in [JLS 4.5.1]. We add to them as follows: - Disregard the 2 rules that refer to a bare `?`. Instead, treat `?` like `? extends Object`, where the [nullness operator] of the `Object` bound is specified by ["Bound of an unbounded wildcard."](#unbounded-wildcard) > This is just a part of our universal rule to treat a bare `?` like `? > extends Object`. - The rule written specifically for `? extends Object` applies only if the nullness operator of the `Object` bound is `UNION_NULL`. - When the JLS refers to the same type `T` on both sides of a rule, the rule applies if and only if this spec defines the 2 types to be the [same type]. **Some-world version:** The rules are the same except that the requirement for "`UNION_NULL`" is loosened to "`UNION_NULL` or `UNSPECIFIED`." ## Substitution > Substitution on Java base types barely requires an explanation: See [JLS 1.3]. > Substitution on [augmented types], however, is trickier: If `Map.get` returns > `V UNION_NULL`, and if a user has a map whose value type is `String > UNSPECIFIED`, then what does its `get` method return? Naive substitution would > produce `String UNSPECIFIED UNION_NULL`. To reduce that to a proper augmented > type with a single nullness operator, we define this process. To substitute each type argument `Aᵢ` for each corresponding type parameter `Pᵢ`: For every type-variable usage `V` whose [base type] is `Pᵢ`, replace `V` with the result of the following operation: - If `V` is [null-exclusive under every parameterization] in [all worlds], then replace it with the result of [applying][applying operator] `MINUS_NULL` to `Aᵢ`. > This is the one instance in which a rule specifically refers to the > [all-worlds] version of another rule. Normally, > [a rule "propagates" its version to other rules](#propagating-multiple-worlds). > But in this instance, the null-exclusivity rule (and all rules that it in > turn applies) are the [all-worlds] versions. > The purpose of this special case is to improve behavior in "the > `ImmutableList.Builder` case": Because `ImmutableList.Builder.add` always > throws `NullPointerException` for a null argument, we would like for > `add(null)` to be a compile error, even under lenient tools. > Unfortunately, without this special case, lenient tools could permit > `add(null)` in unannotated code. For an example, read on. > > Consider an unannotated user of `ImmutableList.Builder builder`. Its > type argument `Foo` will have a [nullness operator] of `UNSPECIFIED`. > Without this special case, the parameter of `builder.add` would have a > nullness operator of `UNSPECIFIED`, too. Then, when a lenient tool would > check whether the [some-world] subtyping relation holds for > `builder.add(null)`, it would find that it does. > > To solve this, we need a special case for substitution for null-exclusive > type parameters like the one on `ImmutableList.Builder`. That special case > needs to produce a type with a nullness operator other than `UNSPECIFIED`. > One valid option is to produce `NO_CHANGE`; we happened to choose > `MINUS_NULL`. > > The choice between `NO_CHANGE` and `MINUS_NULL` makes little difference > for the parameter types of `ImmutableList.Builder`, but it can matter more > for other APIs' *return types*. For example, consider `@NullMarked class > Foo`, which somewhere uses the type > [`FluentIterable`]. `FluentIterable` has a method `Optional > first()`. Even when `E` is a type like `String UNION_NULL` (or `String > UNSPECIFIED`), we know that `first().get()` will never return `null`. To > surface that information to tools, we need to define our substitution rule > to return `E MINUS_NULL`: If we instead used `E NO_CHANGE`, then the > return type would look like it might include `null`. - Otherwise, replace `V` with the result of applying the nullness operator of `V` to `Aᵢ`. ## Applying a nullness operator to an augmented type {#applying-operator} The process of applying a [nullness operator] requires 2 inputs: - the nullness operator to apply - the [augmented type] \(which, as always, includes a nullness operator for that type) to apply it to The result of the process is an augmented type. The process is as follows: First, based on the pair of nullness operators (the one to apply and the one from the augmented type), compute a "desired nullness operator." Do so by applying the following rules in order. Once one condition is met, skip the remaining conditions. - If the nullness operator to apply is `MINUS_NULL`, the desired nullness operator is `MINUS_NULL`. - If either nullness operator is `UNION_NULL`, the desired nullness operator is `UNION_NULL`. - If either nullness operator is `UNSPECIFIED`, the desired nullness operator is `UNSPECIFIED`. - The desired nullness operator is `NO_CHANGE`. Then, if the input augmented type is *not* an [intersection type], the output is the same as the input but with its nullness operator replaced with the desired nullness operator. Otherwise, the output is an intersection type. For every element `Tᵢ` of the input type, the output type has an element that is the result of applying the desired nullness operator to `Tᵢ`. > In this case, the desired nullness operator is always equal to the nullness > operator to apply that was an input to this process. That's because the > nullness operator of the intersection type itself is defined to always be > `NO_CHANGE`. ## Capture conversion The Java rules are defined in [JLS 5.1.10]. We add to them as follows: - The parameterized type that is the output of the conversion has the same [nullness operator] as the parameterized type that is the input type. - Disregard the JLS rule about ``. Instead, treat `?` like `? extends Object`, where the [nullness operator] of the `Object` bound is specified by ["Bound of an unbounded wildcard."](#unbounded-wildcard) > This is just a part of our universal rule to treat a bare `?` like `? > extends Object`. - When a rule generates a lower bound that is the null type, we specify that its nullness operator is `NO_CHANGE`. > See ["Augmented null types."](#null-types) [#100]: https://github.com/jspecify/jspecify/issues/100 [#157]: https://github.com/jspecify/jspecify/issues/157 [#17]: https://github.com/jspecify/jspecify/issues/17 [#181]: https://github.com/jspecify/jspecify/issues/181 [#19]: https://github.com/jspecify/jspecify/issues/19 [#1]: https://github.com/jspecify/jspecify/issues/1 [#260]: https://github.com/jspecify/jspecify/issues/260 [#28]: https://github.com/jspecify/jspecify/issues/28 [#31]: https://github.com/jspecify/jspecify/issues/31 [#33]: https://github.com/jspecify/jspecify/issues/33 [#34]: https://github.com/jspecify/jspecify/issues/34 [#43]: https://github.com/jspecify/jspecify/issues/43 [#49]: https://github.com/jspecify/jspecify/issues/49 [#50]: https://github.com/jspecify/jspecify/issues/50 [#5]: https://github.com/jspecify/jspecify/issues/5 [#60]: https://github.com/jspecify/jspecify/issues/60 [#65]: https://github.com/jspecify/jspecify/issues/65 [#69]: https://github.com/jspecify/jspecify/issues/69 [#7]: https://github.com/jspecify/jspecify/issues/7 [#80]: https://github.com/jspecify/jspecify/issues/80 [#87]: https://github.com/jspecify/jspecify/issues/87 [3-valued logic]: https://en.wikipedia.org/wiki/Three-valued_logic [JLS 1.3]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-1.html#jls-1.3 [JLS 4.10.4]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html#jls-4.10.4 [JLS 4.10]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html#jls-4.10 [JLS 4.4]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html#jls-4.4 [JLS 4.5.1]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html#jls-4.5.1 [JLS 4.5.2]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html#jls-4.5.2 [JLS 4.5]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html#jls-4.5 [JLS 4.9]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html#jls-4.9 [JLS 4]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-4.html [JLS 5.1.10]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-5.html#jls-5.1.10 [JLS 8.4.1]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-8.html#jls-8.4.1 [JLS 8.4.8.1]: https://docs.oracle.com/javase/specs/jls/se14/html/jls-8.html#jls-8.4.8.1 [JVMS 5.4.5]: https://docs.oracle.com/javase/specs/jvms/se14/html/jvms-5.html#jvms-5.4.5 [`FluentIterable`]: https://guava.dev/releases/snapshot-jre/api/docs/com/google/common/collect/FluentIterable.html [all worlds]: #multiple-worlds [all-worlds]: #multiple-worlds [applying operator]: #applying-operator [augmented type]: #augmented-type [augmented types]: #augmented-type [base type]: #base-type [base types]: #base-type [capture conversion]: #capture-conversion [containment]: #containment [in all worlds]: #multiple-worlds [in some world]: #multiple-worlds [intersection type]: #intersection-types [intersection types]: #intersection-types [javadoc]: http://jspecify.org/docs/api/org/jspecify/annotations/package-summary.html [null-exclusive under every parameterization]: #null-exclusive-under-every-parameterization [null-inclusive under every parameterization]: #null-inclusive-under-every-parameterization [null-marked scope]: #null-marked-scope [nullness operator]: #nullness-operator [nullness subtype]: #nullness-subtyping [nullness subtyping]: #nullness-subtyping [nullness-delegating subtyping rules for Java]: #nullness-delegating-subtyping [nullness-delegating subtyping]: #nullness-delegating-subtyping [nullness-subtype-establishing direct-supertype edges]: #nullness-subtype-establishing-direct-supertype-edges [nullness-subtype-establishing path]: #nullness-subtype-establishing-path [recognized]: #recognized-locations-for-type-use-annotations [repeatable]: https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/annotation/Repeatable.html [same type]: #same-type [same-type]: #same-type [semantics]: #semantics [shared folder]: https://drive.google.com/drive/folders/1vZl1odNCBncVaN7EwlwfqI05T_CHIqN- [some world]: #multiple-worlds [some-world]: #multiple-worlds [substitution]: #substitution [subtype]: #subtyping [subtyping]: #subtyping [type component]: #type-components [type components]: #type-components jspecify-1.0.0/docs/docs/start-here.md000066400000000000000000000116301464555076100176220ustar00rootroot00000000000000--- sidebar_position: 1 --- # Start Here Quick links: [Release] | [GitHub] | [User Guide] | [Javadoc] | [Spec] | [Wiki] | [FAQ] | [Issues] | [Discuss] ## What is this? [A group of organizations](/about) are working together to define a common set of annotation types for use in JVM languages, to improve static analysis and language interoperation. Our initial focus is on nullness analysis. This includes providing both an artifact of annotation types your code can depend on (in the `org.jspecify.annotations` package), and *precise* specifications of their semantics. * **Why standardize the annotations?** Because you deserve better than this tragic [stackoverflow answer] depicts. * **Why standardize the semantics?** Because you deserve a single source of truth for how your code should be annotated, instead of having to decide which tool to please at the expense of the others. * **Why do both together?** Because you deserve to find that information easily, right in the javadoc of the annotation classes themselves. JSpecify is developed by consensus of major stakeholders in Java static analysis. Our upcoming 1.0 release will be the first tool-neutral, library-neutral artifact for these annotations. (Note: `javax.annotation` was an attempt at this that never reached consensus and was never actually released.) Learn more about the JSpecify group and its goals in the JSpecify [FAQ]. ## How do I learn about your nullness support? Here are some links. As you read them, you'll probably have a number of "why?" questions, which you can look for in the [Nullness Design FAQ]. If you like, [send us mail](mailto:jspecify-discuss@googlegroups.com). ### Begin with one of * The [User Guide]. * The [Javadoc], which is not a *tutorial* walkthrough, but is thorough and specific. ### Then if you're *really* interested * The [specification], written to be understood by owners of compilers and static analysis tools. Note that it's currently pretty old: it matches JSpecify 0.2, not 1.0. We're working on updating it. * Our [wiki] has about 20 informal, non-normative articles on various topics * Open [issues] * Or try it out... ### Trying it out? * You can try out **version 0.3** of the annotations in your projects, which are almost identical to what we plan to release in 1.0; see the [adoption](https://github.com/jspecify/jspecify/wiki/adoption) wiki page for advice. * Please experiment with our **[reference implementation]**. This lets you validate your usages of the annotations against our defined semantics, which is when you will really get to find out how helpful or annoying our current design choices are for you (which you should let us know!). However, this tool is still a work in progress, and is not at *full* conformance with our own specification quite yet. * We are getting ready to release **version 1.0**, which will commit **permanently** to the annotation APIs, and they will be safe to depend on. From that point, no compile-breaking changes will ever happen, and future specification adjustments will affect only corner cases. ## How can I get involved? Great question. It's not too late for your input to matter! After our 1.0 release, we have plans to extend our support beyond nullness. * Join our new [Google Group]. Introduce yourself! Ask questions, complain, or just tell us what you're hoping to see. If your organization should be a member of our group, tell us about yourselves and self-nominate. * Do you use any libraries or tools that you think should use/support JSpecify annotations? Please tell them about us! * Give some thought to what factors would make your own projects more or less likely to adopt JSpecify, and let us know. * [File an issue] to request a feature or if something is wrong. (If something is wrong with the [reference implementation], [file an issue in its repo](https://github.com/jspecify/jspecify-reference-checker/issues/new).) * Star and Watch our [github] repo. [discuss]: https://groups.google.com/g/jspecify-discuss [file an issue]: https://github.com/jspecify/jspecify/issues/new [github]: https://github.com/jspecify/jspecify [google group]: https://groups.google.com/g/jspecify-discuss [javadoc]: http://jspecify.org/docs/api/org/jspecify/annotations/package-summary.html [faq]: http://github.com/jspecify/jspecify/wiki/jspecify-faq [nullness design faq]: https://github.com/jspecify/jspecify/wiki/nullness-design-FAQ [issues]: https://github.com/jspecify/jspecify/issues [release]: https://search.maven.org/artifact/org.jspecify/jspecify/0.3.0/jar [reference implementation]: https://github.com/jspecify/jspecify-reference-checker [spec]: /docs/spec [specification]: /docs/spec [stackoverflow answer]: https://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use [user guide]: /docs/user-guide [wiki]: https://github.com/jspecify/jspecify/wiki jspecify-1.0.0/docs/docs/user-guide.md000066400000000000000000000541211464555076100176170ustar00rootroot00000000000000--- sidebar_position: 2 --- # Nullness User Guide In Java code, whether an expression may evaluate to `null` is often documented only in natural language, if at all. JSpecify's nullness annotations let programmers express the nullness of Java code in a consistent and well-defined way. JSpecify defines annotations that describe whether a Java type contains the value `null`. Such annotations are useful to (for example): * programmers reading the code, * tools that help developers avoid `NullPointerException`s, * tools that perform run-time checking and test generation, and * documentation systems. ## Java variables are references In Java, all non-primitive variables are either `null` or a reference to an object. We often think of a declaration like `String x` as meaning that `x` is a `String`, but it really means that `x` is *either* `null` *or* a reference to an actual `String` object. JSpecify gives you a way to make it clear whether you really mean that, or you really mean that `x` is definitely a reference to a `String` object and not `null`. ## Types and nullness JSpecify gives you rules that determine, for each type usage, which of four kinds of nullness it has: 1. It can include `null` (it is "nullable"). 2. It will not include `null` (it is "non-nullable"). 3. For type variables only: it includes `null` if the type argument that is substituted for it does (it has "parametric nullness"). 4. We don't know whether it can include `null` (it has "unspecified nullness"). This is equivalent to the state of the world without JSpecify annotations. For a given variable `x`, if `x` can be `null` then `x.getClass()` is unsafe because it could produce a `NullPointerException`. If `x` can't be `null`, `x.getClass()` can never produce a `NullPointerException`. If we don't know whether `x` can be `null` or not, we don't know whether `x.getClass()` is safe (at least as far as JSpecify is concerned). The notion of "can't be `null`" should really be read with a footnote that says "if none of the code in question involves unspecified nullness". For example, if you have some code that passes types with unspecified nulless to a method that accepts only `@NonNull` arguments, then tools might allow it to pass a possibly-`null` value to a method that is expecting a "can't be `null`" parameter. There are four JSpecify annotations that are used together to indicate the nullness of all type usages: * two type use annotations that indicate whether a specific type usage includes `null` or not: [`@Nullable` and `@NonNull`](#nullable-and-nonnull) * a scope annotation that lets you avoid typing `@NonNull` most of the time: [`@NullMarked`](#nullmarked) * another scope annotation that undoes the effects of `@NullMarked` so you can adopt annotations incrementally: [`@NullUnmarked`](#nullunmarked) ## `@Nullable` and `@NonNull` When a type is annotated with [`@Nullable`], it means that a value of the type can be `null`. `@Nullable String x` means that `x` might be `null`. Code that uses those values must be able to deal with the `null` case, and it's okay to assign `null` to such variables or pass `null` to those parameters. When a type is annotated with [`@NonNull`], it means that no value of the type should be `null`. `@NonNull String x` means that `x` should never be `null`. Code that uses those values can assume they're not `null`, and it's a bad idea to assign `null` to those values or pass `null` to those parameters. (See [below](#nullmarked) for how to avoid having to spell out `@NonNull` most of the time.) ```java static @Nullable String emptyToNull(@NonNull String x) { return x.isEmpty() ? null : x; } static @NonNull String nullToEmpty(@Nullable String x) { return x == null ? "" : x; } ``` In this example, the parameter to `emptyToNull` is annotated with `@NonNull`, so it cannot be `null`; `emptyToNull(null)` is not a valid method call. The body of the `emptyToNull` method relies on that assumption and immediately calls `x.isEmpty()`, which would throw `NullPointerException` if `x` were actually `null`. Conversely, `emptyToNull` may return `null`, so its return type is annotated with `@Nullable`. On the other hand, `nullToEmpty` promises to handle `null` arguments, so its parameter is annotated with `@Nullable` to indicate that `nullToEmpty(null)` is a valid method call. Its body considers the case where the argument is `null` and won't throw `NullPointerException`. It cannot return `null`, so its return type is annotated with `@NonNull`. ```java void doSomething() { // OK: nullToEmpty accepts null but won't return it int length1 = nullToEmpty(null).length(); // Not OK: emptyToNull doesn't accept null; also, it might return null! int length2 = emptyToNull(null).length(); } ``` Tools can use the `@Nullable` and `@NonNull` annotations to warn users about calls that are unsafe. As far as JSpecify is concerned, `@NonNull String` and `@Nullable String` are *different types*. A variable of type `@NonNull String` can reference any `String` object. A variable of type `@Nullable String` can too, but it can also be `null`. This means that `@NonNull String` is a *subtype* of `@Nullable String`, in the same way that `Integer` is a subtype of `Number`. One way to look at this is that a subtype narrows the range of possible values. A `Number` variable can be assigned from an `Integer` but it can also be assigned from a `Long`. Meanwhile an `Integer` variable can't be assigned from a `Number` (since that `Number` might be a `Long` or some other subtype). Likewise, a `@Nullable String` can be assigned from a `@NonNull String` but a `@NonNull String` can't be assigned from a `@Nullable String` (since that might be `null`). ```java class Example { void useNullable(@Nullable String x) {...} void useNonNull(@NonNull String x) {...} void example(@Nullable String nullable, @NonNull String nonNull) { useNullable(nonNull); // JSpecify allows this useNonNull(nullable); // JSpecify doesn't allow this } } ``` ## What about unannotated types? A type like `String` that isn't annotated with either `@Nullable` or `@NonNull` means what it always used to mean: its values might be intended to include `null` or might not, depending on whatever documentation you can find (but see [below](#nullmarked) for help!). JSpecify calls this "unspecified nullness". ```java class Unannotated { void whoKnows(String x) {...} void example(@Nullable String nullable) { whoKnows(nullable); // ¯\_(ツ)_/¯ } } ``` ## `@NullMarked` It would be annoying to have to annotate each and every type usage in your Java code with either `@Nullable` or `@NonNull` to avoid unspecified nullness (especially once you add [generics](#generics)!). So JSpecify gives you the [`@NullMarked`] annotation. When you apply `@NullMarked` to a module, package, class, or method, it means that unannotated types in that scope are treated as if they were annotated with `@NonNull`. (Below we will see that there are some exceptions to this for [local variables](#local-variables) and [type variables](#declaring-generics).) In code covered by `@NullMarked`, `String x` means the same as `@NonNull String x`. If applied to a module then its scope is all the code in the module. If applied to a package then its scope is all the code in the package. (Note that packages are *not* hierarchical; applying `@NullMarked` to package `com.foo` does not make package `com.foo.bar` `@NullMarked`.) If applied to a class, interface, or method, then its scope is all the code in that class, interface, or method. ```java @NullMarked class Strings { static @Nullable String emptyToNull(String x) { return x.isEmpty() ? null : x; } static String nullToEmpty(@Nullable String x) { return x == null ? "" : x; } } ``` Here's the example from above, where the class containing the methods is annotated with `@NullMarked`. The nullness of the types is the same as before: `emptyToNull` does not accept `null` arguments, but it might return `null`; `nullToEmpty` does accept `null` arguments, but it won't return `null`. But we were able to do that with fewer annotations. In general, using `@NullMarked` will give you correct nullness semantics with fewer annotations. In `@NullMarked` code, you'll get used to thinking about plain, unannotated types like `String` as meaning a real reference to a `String` object and never `null`. As mentioned above, there are some exceptions to this interpretation for [local variables](#local-variables) and [type variables](#declaring-generics). ### `@NullUnmarked` If you're applying JSpecify annotations to your code, you might not be able to annnotate it all at once. If you can apply `@NullMarked` to some of your code now, and do the rest later, that's better than waiting until you have time to annotate everything. But that means you may have to null-mark a module, package or class *except for some classes or methods*. To do that, apply [`@NullUnmarked`] to a package, class, or method that's already inside a `@NullMarked` context. `@NullUnmarked` simply undoes the effects of the surrounding `@NullMarked`, so that unannotated types have unspecified nullness unless they are annotated with `@Nullable` or `@NonNull`, as if there were no enclosing `@NullMarked` at all. A `@NullUnmarked` scope may in turn contain a nested `@NullMarked` element to make most unannotated type usages non-null within that narrower scope. ## Local variables `@Nullable` and `@NonNull` aren't applied to local variables—at least not their root types. (They should be applied to type arguments and array components.) The reason is that it is possible to *infer* whether a variable can be `null` based on the values that are assigned to the variable. For example: ```java @NullMarked class MyClass { void myMethod(@Nullable String one, String two) { String anotherOne = one; String anotherTwo = two; String oneOrTwo = random() ? one : two; String twoOrNull = Strings.emptyToNull(two); ... } } ``` Analysis can tell that all of these variables except `anotherTwo` can be `null`. `anotherTwo` can't be `null` since `two` can't be `null`: it is not `@Nullable` and it is inside the scope of `@NullMarked`. `anotherOne` can be `null` since it is assigned from a `@Nullable` parameter. `oneOrTwo` can be `null` because it may assigned from a `@Nullable` parameter. And `twoOrNull` can be `null` because its value comes from a method that returns `@Nullable String`. ## Generics When you are using a generic type, the rules about `@Nullable`, `@NonNull`, and `@NullMarked` are as you would expect from what we have seen. For example, within a `@NullMarked` context, `List<@Nullable String>` means a reference to a `List` (not `null`) where each element is either a reference to a `String` object or `null`; but `List` means a list (not `null`) where each element is a reference to a `String` object and *can't* be `null`. ### Declaring generic types {#declaring-generics} Things are a bit more complicated when you are *declaring* a generic type. Consider this: ```java @NullMarked public class NumberList implements List {...} ``` The `extends Number` defines a *bound* for the type variable `E`. It means that you can write `NumberList`, since `Integer` can be assigned to `Number`, but you can't write `NumberList`, since `String` can't be assigned to `Number`. This is standard Java behavior. But now let's think about that bound as it relates to `@NullMarked`. Can we write `NumberList<@Nullable Integer>`? Within `@NullMarked`, remember, unannotated types are the same as if they were annotated with `@NonNull`. Since the bound of `E` is the same as `@NonNull Number`, and not `@Nullable Number`, that means the type argument for `E` can't be a type that includes `null`. `@Nullable Integer` can't be the type argument, then, since that *can* include `null`. (In other words: `@Nullable Integer` *is not a subtype* of `Number`.) Inside `@NullMarked`, if you want to be able to substitute nullable type arguments for a type parameter, you must explicitly provide a `@Nullable` bound on your type variable: ```java @NullMarked public class NumberList implements List {...} ``` Now it *is* legal to write `NumberList<@Nullable Integer`>, since `@Nullable Integer` is assignable to the bound `@Nullable Number`. It's *also* legal to write `NumberList`, since plain `Integer` is assignable to `@Nullable Number`. Inside `@NullMarked`, plain `Integer` means the same thing as `@NonNull Integer`: a reference to an actual `Integer` value, never `null`. That just means that the values represented by `E` can be `null` on some other parameterization of `NumberList`, but not in an instance of `NumberList`. Of course this assumes that `List` itself is written in a way that allows nullable type arguments: ```java @NullMarked public interface List {...} ``` If it were `interface List` rather than `interface List` then `NumberList implements List` would not be legal. That's because `interface List` is short for `interface List`. Inside `@NullMarked`, plain `Object` means "`Object` reference that can't be `null`". The `` from `NumberList` would not be compatible with ``. The implication of all this is that every time you define a type variable like `E` you need to decide whether it can be substituted with a `@Nullable` type. If it can, then it must have a `@Nullable` bound. Often this will be ``. On the other hand, if it *can't* represent a `@Nullable` type, that is expressed by not having `@Nullable` in its bound (including the case of not having an explicit bound at all). Here's another example: ```java @NullMarked public class ImmutableList implements List {...} ``` Here, because it is `ImmutableList` and not `ImmutableList`, it is not legal to write `ImmutableList<@Nullable String>`. You can only write `ImmutableList`, which is a list of non-null `String` references. ### Using type variables in generic types Let's look at what the methods in the `List` interface might look like: ```java @NullMarked public interface List { boolean add(E element); E get(int index); @Nullable E getFirst(); Optional<@NonNull E> maybeFirst(); ... } ``` The parameter type `E` of `add` means a reference that is compatible with the actual type of the `List` elements. Just as you can't add an `Integer` to a `List`, you also can't add a `@Nullable String` to a `List`, but you *can* add it to a `List<@Nullable String>`. Similarly, the return type `E` of `get` means that it returns a reference with the actual type of the list elements. If the list is a `List<@Nullable String>` then that reference is a `@Nullable String`. If the list is a `List` then the reference is a `String`. On the other hand, the return type `@Nullable E` of the (fictitious) `getFirst` method is always `@Nullable`. It will be `@Nullable String` whether called on a `List<@Nullable String>` or a `List`. The idea is that the method returns the first element of the list, or `null` if the list is empty. Similarly, the real methods `@Nullable V get(Object key)` in `Map` and `@Nullable E peek()` in `Queue` can return `null` even when `V` and `E` can't be `null`. The distinction here is an important one that is worth repeating. A use of a type variable like `E` should only be `@Nullable E` if it means a reference that can be `null` *even if* `E` itself can't be `null`. Otherwise, plain `E` means a reference that can only be `null` if `E` is a `@Nullable` type, like `@Nullable String` in this example. (And, as we've seen, `E` can only be a `@Nullable` type if the definition of `E` has a `@Nullable` bound like ``.) Similarly, you can use `@NonNull E` to indicate a type that is non-nullable *even when `E` is nullable*. The fictitious `maybeFirst()` method returns a non-nullable `Optional`. An `Optional` object can hold only non-null values, so it's reasonable to define it as `class Optional`; that is, its type argument must not be nullable. So even for a `List<@Nullable String>`, `maybeFirst()` has to return `Optional<@NonNull String>`. The way to declare that is to declare the return type of `maybeFirst()` as `Optional<@NonNull E>`. We saw earlier that `@NullMarked` usually means "references can't be `null` unless they are marked `@Nullable`", and also that that doesn't apply to local variables. Here we see that it doesn't apply to unannotated type variable uses either, since an unannotated type variable usage whose bound is `@Nullable` may be substituted with a `@Nullable` type argument. ### Using type variables in generic methods Essentially the same considerations that we just saw with generic types apply to generic methods too. Here's an example: ```java @NullMarked public class Methods { public static @Nullable T firstOrNull(List list) { return list.isEmpty() ? null : list.get(0); } public static T firstOrNonNullDefault(List list, T defaultValue) { return list.isEmpty() ? defaultValue : list.get(0); } public static T firstOrDefault(List list, T defaultValue) { return list.isEmpty() ? defaultValue : list.get(0); } public static @Nullable T firstOrNullableDefault(List list, @Nullable T defaultValue) { return list.isEmpty() ? defaultValue : list.get(0); } } ``` The `firstOrNull` method will accept a `List` but not a `List<@Nullable String>`. When given an argument of type `List`, `T` is `String`, so the return type `@Nullable T` is `@Nullable String`. The input list can't contain `null` elements, but the return value can be `null`. The `firstOrNonNullDefault` method again does not allow `T` to be a `@Nullable` type, so `List<@Nullable String>` is not allowed. Now the return value is not `@Nullable` either which means it will never be `null`. The `firstOrDefault` method will accept both `List` and `List<@Nullable String>`. In the first case, `T` is `String`, so the type of the `defaultValue` parameter and of the return value is `String`, meaning neither can be `null`. In the second case, `T` is `@Nullable String`, so the type of `defaultValue` and of the return value is `@Nullable String`, meaning either can be `null`. The `firstOrNullableDefault` method again accepts both `List` and `List<@Nullable String>`, but now the `defaultValue` parameter is marked `@Nullable` so it can be `null` even in the `List` case. Likewise the return value is `@Nullable T` so it can be `null` even when `T` can't. Here's another example: ```java @NullMarked public static List<@Nullable T> nullOutMatches(List list, T toRemove) { List<@Nullable T> copy = new ArrayList<>(list); for (int i = 0; i < copy.size(); i++) { if (copy.get(i).equals(toRemove)) { copy.set(i, null); } } return copy; } ``` This takes a `List`, which by definition does not contain `null` elements, and produces a `List<@Nullable T>`, with `null` in place of every element that matched `toRemove`. The output is a `List<@Nullable T>` because it *can* contain `null` elements, even if `T` itself can't be `null`. ## Some subtler details The previous sections cover 99% of everything you need to know to be able to use JSpecify annotations effectively. Here we'll cover a few details you probably won't need to know. ### Type-use annotation syntax There are a couple of places where the syntax of type-use annotations like `@Nullable` and `@NonNull` may be surprising. 1. For a nested static type like `Map.Entry`, if you want to say that the value can be `null` then the syntax is `Map.@Nullable Entry`. You can often avoid dealing with this by importing the nested type directly, but in this case `import java.util.Map.Entry` might be undesirable because `Entry` is such a common type name. 1. For an array type, if you want to say that the *elements* of the array can be `null` then the syntax is `@Nullable String[]`. If you want to say that the *array itself* can be `null` then the syntax is `String @Nullable []`. And if both the elements and the array itself can be `null`, the syntax is `@Nullable String @Nullable []`. A good way to remember this is that it is the thing right after `@Nullable` that can be `null`. It is the `Entry` that can be `null` in `Map.@Nullable Entry`, not the `Map`. It is the `String` that can be `null` in `@Nullable String[]` and it is the `[]`, meaning the array, that can be `null` in `String @Nullable []`. ### Wildcard bounds Inside `@NullMarked`, wildcard bounds work almost exactly the same as type variable bounds. We saw that `` means that E can be a `@Nullable` type and `` means it can't. Likewise, `List` means a list where the elements can be `null`, and `List` means they can't. However, there's a difference when there is no explicit bound. We saw that a type variable definition like `` means `` and that means it is not `@Nullable`. But `` actually means ``, where `B` is the bound of the corresponding type variable. So if we have ```java interface List {...} ``` then `List` means the same as `List`. If we have ```java class ImmutableList implements List {...} ``` then we saw that that means the same as ```java class ImmutableList implements List ``` so `ImmutableList` means the same as `ImmutableList`. And here, `@NullMarked` means that `Object` excludes `null`. The `get(int)` method of `List` can return `null` but the same method of `ImmutableList` can't. [`@NonNull`]: https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html [`@Nullable`]: https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html [`@NullMarked`]: https://jspecify.dev/docs/api/org/jspecify/annotations/NullMarked.html [`@NullUnmarked`]: https://jspecify.dev/docs/api/org/jspecify/annotations/NullUnmarked.html jspecify-1.0.0/docs/docusaurus.config.js000066400000000000000000000111321464555076100202660ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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. */ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion import {themes as prismThemes} from 'prism-react-renderer'; /** @type {import('@docusaurus/types').Config} */ const config = { title: 'JSpecify', tagline: 'Standard Annotations for Java Static Analysis', url: 'http://jspecify.org/', baseUrl: '/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'throw', favicon: 'img/jspecify-favicon.ico', // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. organizationName: 'jspecify', // Usually your GitHub org/user name. projectName: 'jspecify', // Usually your repo name. // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". i18n: { defaultLocale: 'en', locales: ['en'], }, presets: [ [ 'classic', /** @type {import('@docusaurus/preset-classic').Options} */ ({ docs: { sidebarPath: require.resolve('./sidebars.js'), // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/jspecify/jspecify/tree/main/docs/', }, blog: { showReadingTime: true, // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/jspecify/jspecify/tree/main/docs/', }, theme: { customCss: require.resolve('./src/css/custom.css'), }, }), ], ], themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ navbar: { title: 'JSpecify', logo: { alt: 'JSpecify Logo', src: 'img/jspecify-logo.svg', }, items: [ {to: '/about', label: 'About Us', position: 'left'}, {to: '/docs/start-here', label: 'Start Here', position: 'left'}, { href: 'http://jspecify.org/docs/api/org/jspecify/annotations/package-summary.html', label: 'Javadoc', position: 'left', }, {to: '/blog', label: 'Blog', position: 'left'}, { href: 'https://github.com/jspecify/jspecify', label: 'GitHub', position: 'right', }, ], }, footer: { style: 'dark', links: [ { title: 'Docs', items: [ { label: 'Start Here', to: '/docs/start-here', }, { label: 'User Guide', to: '/docs/user-guide', }, { label: 'Javadoc', href: 'http://jspecify.org/docs/api/org/jspecify/annotations/package-summary.html', }, { label: 'Draft Specification', to: '/docs/spec', }, ], }, { title: 'Contacts', items: [ { label: 'Public Group', href: 'https://groups.google.com/g/jspecify-discuss' }, { label: 'Mail The Team', href: 'mailto:jspecify-dev@googlegroups.com', }, ], }, { title: 'More', items: [ { label: 'GitHub', href: 'https://github.com/jspecify/jspecify', }, { label: 'Blog', to: '/blog', }, ], }, ], copyright: `Copyright ${new Date().getFullYear()} The JSpecify Authors. Built with Docusaurus.`, }, prism: { theme: prismThemes.github, darkTheme: prismThemes.dracula, additionalLanguages: ['java'], }, }), }; export default config; jspecify-1.0.0/docs/locale/000077500000000000000000000000001464555076100155305ustar00rootroot00000000000000jspecify-1.0.0/docs/locale/ja/000077500000000000000000000000001464555076100161225ustar00rootroot00000000000000jspecify-1.0.0/docs/locale/ja/LC_MESSAGES/000077500000000000000000000000001464555076100177075ustar00rootroot00000000000000jspecify-1.0.0/docs/locale/ja/LC_MESSAGES/index.po000066400000000000000000000175521464555076100213700ustar00rootroot00000000000000# Copyright 2020 The JSpecify Authors. # # 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. #, fuzzy msgid "" msgstr "" "Project-Id-Version: jspecify \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-16 01:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" #: ../../index.rst:65 msgid "Contents" msgstr "コンテンツ" #: ../../index.rst:2 msgid "JSpecify: Standard Java annotations for static analysis" msgstr "JSpecify: 静的解析のための標準化されたJavaアノテーション" #: ../../index.rst:5 msgid "Our Goal" msgstr "私達の目的" #: ../../index.rst:7 msgid "" "Java static analysis tools, such as Error Prone and those built into " "IDEs, have been very successful at enabling automated refactorings and " "bug prevention. Many of their most beneficial analyses require certain " "Java annotations (such as ``@Nullable`` or ``@Immutable``) to be present " "in the source or class file." msgstr "" "Error " "ProneやIDE組み込みツールのようなJava静的解析ツールは、これまでリファクタリング自動化やバグの予防に活用されてきました。こうした利益をもたらす解析の多くは(``@Nullable``" " や ``@Immutable`` のような)特定のJavaアノテーションがソースコードまたはクラスファイルに含まれることを前提にしています。" #: ../../index.rst:10 msgid "" "Yet for the 15 years since Java annotations were introduced (five years " "for type-use annotations), users have never had a clear answer for which " "incarnation of these annotation classes they can safely adopt. Many such " "artifacts have been created, but there has never been a serious and " "successful effort to provide a single well-specified standard with " "industry consensus." msgstr "Javaアノテーションが導入されてから15年経った(TYPE_USEアノテーションは5年)今でも、ユーザは未だに安全に利用できる明確な回答を持ち合わせていません。たくさんの成果物が作られましたが、いずれも良く定義され業界のコンセンサスを得た標準にはなれませんでした。" #: ../../index.rst:13 msgid "" "The lack of this artifact has constrained the prevalence and overall " "value of static analysis technology throughout the industry. It has " "encouraged today's tools to accept a wide variety of annotations, " "treating them equivalently, which renders the annotation specifications " "meaningless (an API owner cannot know whether applying a particular " "annotation is correct without knowing which tool its users will be using " "to interpret them)." msgstr "標準となる成果物がないことが、業界における静的解析技術の普及と全体的な価値とを制限してきました。最近の静的解析ツールは多様なアノテーションを同等にサポートすることを求められ、結果としてそれぞれのアノテーションの仕様を無意味にしてしまいました(APIの作者はAPIユーザーがどの静的解析ツールを使ってAPIを解釈するかを知らなければ、そのアノテーションを適用することが正しいかどうか知ることができません)。" #: ../../index.rst:16 msgid "" "Finally, it complicates interoperation between Java and other JVM " "languages, which sometimes expect additional API metadata (such as " "nullability) that the Java language can't express." msgstr "標準の欠落は、Javaと他のJVM言語との間の相互運用とを複雑にします。JVM言語がJava言語では表現できない追加のAPIメタデータ(null可能性など)を期待することがあるためです。" #: ../../index.rst:18 msgid "" "This missing artifact, with full specifications, is what we are working " "to create. [1]_" msgstr "この失われた成果物を正式な仕様と共に作成することが、私達が成そうとしていることです。 [1]_" #: ../../index.rst:20 msgid "" "We have seen the xkcd comic. Please do not send us the xkcd comic. We " "know about the xkcd comic." msgstr "私達はxkcdを読んだことがあります。どうかあのマンガを私達に送らないでください。知ってます。" #: ../../index.rst:23 msgid "Activity" msgstr "活動" #: ../../index.rst:25 msgid "" "The primary location for our day-to-day work is on GitHub: " "https://github.com/jspecify/jspecify" msgstr "私達は日々、主にGitHubで活動しています: https://github.com/jspecify/jspecify" #: ../../index.rst:28 msgid "Talks about JSpecify" msgstr "JSpecifyに関するトーク" #: ../../index.rst:30 msgid "" "`JVMLS19 overview presentation `_" msgstr "" "`JVMLS19 にて発表されたプロジェクト概要(英文) `_" #: ../../index.rst:33 msgid "Participants" msgstr "参加団体" #: ../../index.rst:35 msgid "" "People from the following projects and organizations are collaborating on" " this project:" msgstr "以下に挙げるプロジェクトや組織がこのプロジェクトに協力しています:" #: ../../index.rst:38 msgid "Project" msgstr "プロジェクト" #: ../../index.rst:38 msgid "Organization" msgstr "組織" #: ../../index.rst:40 msgid "`Android `_" msgstr "" #: ../../index.rst:40 ../../index.rst:44 ../../index.rst:46 msgid "`Google `_" msgstr "" #: ../../index.rst:42 msgid "`Checker Framework `_" msgstr "" #: ../../index.rst:42 msgid "`Checker Framework Team `_" msgstr "" #: ../../index.rst:44 msgid "`Error Prone `_" msgstr "" #: ../../index.rst:46 msgid "`Guava `_" msgstr "" #: ../../index.rst:48 msgid "`IntelliJ IDEA `_" msgstr "" #: ../../index.rst:48 ../../index.rst:50 msgid "`JetBrains `_" msgstr "" #: ../../index.rst:50 msgid "`Kotlin `_" msgstr "" #: ../../index.rst:52 msgid "`NullAway `_" msgstr "" #: ../../index.rst:52 msgid "`Uber `_" msgstr "" #: ../../index.rst:54 msgid "`PMD `_" msgstr "" #: ../../index.rst:54 msgid "`PMD Team `_" msgstr "" #: ../../index.rst:56 msgid "`Spring `_" msgstr "" #: ../../index.rst:56 msgid "`VMware `_" msgstr "" #: ../../index.rst:58 msgid "`SonarQube `_" msgstr "" #: ../../index.rst:58 msgid "`SonarSource `_" msgstr "" #: ../../index.rst:62 msgid "`Square `_" msgstr "" #: ../../index.rst:72 msgid "Contact Info" msgstr "連絡先" #: ../../index.rst:74 msgid "Email the group at ." msgstr "jspecify-dev@googlegroups.com にメールを送ってください。" #: ../../index.rst:77 msgid "Indices and searches" msgstr "索引と検索" #: ../../index.rst:79 msgid ":ref:`genindex`" msgstr "" #: ../../index.rst:80 msgid ":ref:`search`" msgstr "" jspecify-1.0.0/docs/locale/ja/LC_MESSAGES/tsttcpw.po000066400000000000000000001100121464555076100217520ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2020, The JSpecify Authors # This file is distributed under the same license as the JSpecify package. # FIRST AUTHOR , 2021. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: JSpecify \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-16 00:56+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" #: ../../tsttcpw.rst:2 msgid "The Simplest(?) Thing That Could Possibly Work for subtyping" msgstr "" #: ../../tsttcpw.rst:4 msgid "" "**This is not “the JSpecify spec.” This is an initial attempt to formally" " specify only a subset of the rules we’ll need for a subset of features " "we wish to cover. Additionally, it deviates from some of our current " "working decisions in an effort to remain simple.**" msgstr "" #: ../../tsttcpw.rst msgid "High-level overview" msgstr "" #: ../../tsttcpw.rst:12 msgid "" "It may be that some people will use this doc to guide their " "implementations in the near future. Please don’t hesitate to let cpovirk " "know of any confusing bits." msgstr "" #: ../../tsttcpw.rst:16 msgid "" "I should probably preemptively clarify at least one thing. In this doc, I" " have tried to distinguish explicitly between 3 “kinds of nullability” of" " a given type usage. Each kind is derived (at least in part) from the " "previous:" msgstr "" #: ../../tsttcpw.rst:21 msgid "What annotation (if any) appears directly on that type usage?" msgstr "" #: ../../tsttcpw.rst:22 msgid "What is the `nullness operator <#nullness-operator>`__ of that type usage?" msgstr "" #: ../../tsttcpw.rst:24 msgid "For that type usage…" msgstr "" #: ../../tsttcpw.rst:26 msgid "Is it safe to assume that is not ``null``?" msgstr "" #: ../../tsttcpw.rst:27 msgid "Is it safe to put a ``null`` into it?" msgstr "" #: ../../tsttcpw.rst:28 msgid "neither (as in “parametric nullness”)" msgstr "" #: ../../tsttcpw.rst:29 msgid "both (as in “unspecified nullness” in “lenient mode”)" msgstr "" #: ../../tsttcpw.rst:31 msgid "TODO(cpovirk): Link to my “Don’t say ‘nullable’” doc once I write it." msgstr "" #: ../../tsttcpw.rst:36 msgid "References to concepts defined by this spec" msgstr "" #: ../../tsttcpw.rst:38 msgid "" "When a rule in this spec refers to any concept that is defined in this " "spec (for example, `substitution <#substitution>`__ or `containment " "<#containment>`__), apply this spec’s definition (as opposed to other " "definitions, such as the ones in the JLS)." msgstr "" #: ../../tsttcpw.rst:43 msgid "" "Additionally, when a rule in this spec refers to a JLS rule that in turn " "refers to a concept that is defined in this spec, likewise apply this " "spec’s definition." msgstr "" #: ../../tsttcpw.rst:47 msgid "" "In particular, when a JLS rule refers to types, apply this spec’s " "definition of `augmented types <#augmented-type>`__ (as oppposed to `base" " types `__)." msgstr "" #: ../../tsttcpw.rst:53 msgid "Nullness operator" msgstr "" #: ../../tsttcpw.rst:55 msgid "An nullness operator is one of 4 values:" msgstr "" #: ../../tsttcpw.rst:57 msgid "``UNION_NULL``" msgstr "" #: ../../tsttcpw.rst:58 msgid "``NO_CHANGE``" msgstr "" #: ../../tsttcpw.rst:59 msgid "``UNSPECIFIED``" msgstr "" #: ../../tsttcpw.rst:60 msgid "``MINUS_NULL``" msgstr "" #: ../../tsttcpw.rst:64 msgid "" "The distinction among these 4 values is similar to the distinction among " "the Kotlin types ``Foo?``, ``Foo``, ``Foo!``, and ``Foo!!``, " "respectively." msgstr "" #: ../../tsttcpw.rst:69 msgid "Augmented type" msgstr "" #: ../../tsttcpw.rst:71 msgid "" "An augmented type consists of a `base type " "`__ and a " "`nullness operator <#nullness-operator>`__ corresponding to *each* of its" " `type components `__." msgstr "" #: ../../tsttcpw.rst:77 msgid "" "This differs from our current `glossary definition " "`__, which is " "written in terms of a “nullness” for each component, not a “nullness " "operator.” Still, the glossary’s concept of the “nullness” of a type is " "derivable from the type’s nullness operator. Notably, the glossary’s " "“nullable” type is our `least convenient world <#multiple-worlds>`__\\ ’s" " `trusted null-inclusive under every parameterization <#trusted-null-" "inclusive-under-every-parameterization>`__, and the glossary’s “non-" "nullable” type is our least convenient world’s `trusted null-exclusive " "under every parameterization <#trusted-null-exclusive-under-every-" "parameterization>`__." msgstr "" #: ../../tsttcpw.rst:89 msgid "" "For our purposes, base types (and thus augmented types) include not just " "class and interface types, array types, and type variables but also " "`intersection types <#intersection-types>`__ and the null type. This is " "true even though the JLS sometimes does not supply rules for intersection" " types and sometimes has separate rules for the null type." msgstr "" #: ../../tsttcpw.rst:95 msgid "" "The goal of this spec is to define rules for augmented types compatible " "with those that the JLS defines for base types." msgstr "" #: ../../tsttcpw.rst:98 msgid "" "In almost all cases, this spec agrees with the JLS’s rules when " "specifying what *base* types appear in a piece of code. It makes an " "exception for `“Bound of an unbounded wildcard,” <#unbounded-wildcard>`__" " for which it specifies a bound of ``Object`` that the JLS does not " "specify." msgstr "" #: ../../tsttcpw.rst:104 msgid "" "When this spec uses capital letters, they refer to augmented types " "(unless otherwise noted). This is in contrast to the JLS, which typically" " uses them to refer to base types." msgstr "" #: ../../tsttcpw.rst:108 msgid "" "When this spec refers to “the nullness operator of” a type ``T``, it " "refers specifically to the nullness operator of the type component that " "is the entire type ``T``, without reference to the nullness operator of " "any other type components of ``T``." msgstr "" #: ../../tsttcpw.rst:113 msgid "" "For example, the nullness operator of ``List<@Nullable Object>`` would be" " ``NO_CHANGE`` (at least in a `null-aware context <#null-aware-" "context>`__), even though the nullness operator of its element type " "``Object`` is ``UNION_NULL``." msgstr "" #: ../../tsttcpw.rst:119 msgid "Null-aware context" msgstr "" #: ../../tsttcpw.rst:121 msgid "To determine whether a type usage appears in a null-aware context:" msgstr "" #: ../../tsttcpw.rst:123 msgid "" "Look for an ``@org.jspecify.annotations.NullAware`` annotation on any of " "the enclosing scopes surrounding the type usage." msgstr "" #: ../../tsttcpw.rst:126 msgid "" "Class members are enclosed by classes, which may be enclosed by other " "class members or classes. and top-level classes are enclosed by packages," " which may be enclosed by modules." msgstr "" #: ../../tsttcpw.rst:130 msgid "Packages are *not* enclosed by “parent” packages." msgstr "" #: ../../tsttcpw.rst:134 msgid "" "This definition of “enclosing” likely matches `the definition in the Java" " compiler API " "`__." msgstr "" #: ../../tsttcpw.rst:138 msgid "" "If an ``@org.jspecify.annotations.NullAware`` annotation exists on one of" " these scopes, then the type usage is in a null-aware context. Otherwise," " it is not." msgstr "" #: ../../tsttcpw.rst:145 msgid "Augmented type of a type usage appearing in code" msgstr "" #: ../../tsttcpw.rst:147 msgid "" "For most type usages in source code or bytecode on which JSpecify " "nullness annotations are structurally valid, this section defines how to " "determine their `augmented types <#augmented-type>`__. Note, however, " "that rules for specific cases below take precedence over the general rule" " here." msgstr "" #: ../../tsttcpw.rst:153 msgid "" "Because the JLS already has rules for determining the `base type " "`__ for a type " "usage, this section covers only how to determine its `nullness operator " "<#nullness-operator>`__." msgstr "" #: ../../tsttcpw.rst:158 msgid "" "To determine the nullness operator, apply the following rules in order. " "Once one condition is met, skip the remaining conditions." msgstr "" #: ../../tsttcpw.rst:161 msgid "" "If the type usage is annotated with " "``@org.jspecify.annotations.Nullable``, its nullness operator is " "``UNION_NULL``." msgstr "" #: ../../tsttcpw.rst:164 msgid "" "If the type usage appears in a `null-aware context <#null-aware-" "context>`__, its nullness operator is ``NO_CHANGE``." msgstr "" #: ../../tsttcpw.rst:167 msgid "Its nullness operator is ``UNSPECIFIED``." msgstr "" #: ../../tsttcpw.rst:171 msgid "" "The choice of nullness operator is *not* affected by any nullness " "operator that appears in a corresponding location in a supertype. For " "example, if one type declares a method whose return type is annotated " "``@Nullable``, and if another type overrides that method but does not " "declare the return type as ``@Nullable``, then the override’s return type" " will *not* have nullness operator ``UNION_NULL``." msgstr "" #: ../../tsttcpw.rst:178 msgid "" "The rules here never produce the fourth nullness operator, " "``MINUS_NULL``. (It will appear later in `substitution " "<#substitution>`__. Additionally, we expect for tool authors to produce " "``MINUS_NULL`` based on the results of null checks in implementation " "code.) However, if tool authors prefer, they can safely produce " "``MINUS_NULL`` in any case in which it is equivalent to ``NO_CHANGE``. " "For example, there is no difference between a ``String`` with " "``NO_CHANGE`` and a ``String`` with ``MINUS_NULL``." msgstr "" #: ../../tsttcpw.rst:190 msgid "Augmented type of an intersection type" msgstr "" #: ../../tsttcpw.rst:192 msgid "" "Technically speaking, the JLS does not define syntax for an intersection " "type. Instead, it defines a syntax for type parameters and casts that " "supports multiple types. Then the intersection type is derived from " "those. Intersection types can also arise from operations like `capture " "conversion <#capture-conversion>`__. See `JLS 4.9 " "`__." msgstr "" #: ../../tsttcpw.rst:199 msgid "" "One result of all this is that it’s never possible for a programmer to " "write an annotation “on an intersection type.”" msgstr "" #: ../../tsttcpw.rst:202 msgid "" "This spec assigns a `nullness operator <#nullness-operator>`__ to each " "individual element of an intersection type, following our normal rules " "for type usages. It also assigns a nullness operator to the intersection " "type as a whole. The nullness operator of the type as a whole is always " "``NO_CHANGE``." msgstr "" #: ../../tsttcpw.rst:208 msgid "" "This lets us provide, for every `base type " "`__, a rule for " "computing its `augmented type <#augmented-type>`__. But we require " "``NO_CHANGE`` so as to avoid questions like whether “a ``UNION_NULL`` " "intersection type whose members are ``UNION_NULL`` ``Foo`` and " "``UNION_NULL`` ``Bar``” is a subtype of “a ``NO_CHANGE`` intersection " "type with those same members.” Plus, it would be difficult for tools to " "output the nullness operator of an intersection type in a human-readable " "way." msgstr "" #: ../../tsttcpw.rst:220 msgid "" "To avoid ever creating an intersection type with a nullness operator " "other than ``NO_CHANGE``, we define special handling for intersection " "types under `“Applying a nullness operator to an augmented type.” " "<#applying-operator>`__" msgstr "" #: ../../tsttcpw.rst:228 msgid "Bound of an “unbounded” wildcard" msgstr "" #: ../../tsttcpw.rst:230 msgid "" "In source, an unbounded wildcard is written as ````. This section does" " **not** apply to ````, even though that is often " "equivalent to ````. See `JLS 4.5.1 " "`__." msgstr "" #: ../../tsttcpw.rst:235 msgid "" "In bytecode, such a wildcard is represented as a wildcard type with an " "empty list of upper bounds and an empty list of lower bounds. This " "section does **not** apply to a wildcard with any bounds in either list, " "even a sole upper bound of ``Object``." msgstr "" #: ../../tsttcpw.rst:240 msgid "" "For a wildcard with an explicit bound of ``Object`` (that is, ````, perhaps with an annotation on ``Object``), instead " "apply `the normal rules <#augmented-type-of-usage>`__ for the explicit " "bound type." msgstr "" #: ../../tsttcpw.rst:245 msgid "" "If an unbounded wildcard appears in a `null-aware context <#null-aware-" "context>`__, then it has a single upper bound whose `base type " "`__ is ``Object`` " "and whose `nullness operator <#nullness-operator>`__ is ``UNION_NULL``." msgstr "" #: ../../tsttcpw.rst:252 msgid "" "If an unbounded wildcard appears outside a null-aware context, then it " "has a single upper bound whose base type is ``Object`` and whose nullness" " operator is ``UNSPECIFIED``." msgstr "" #: ../../tsttcpw.rst:256 msgid "" "In both cases, we specify a bound that does not exist in the source or " "bytecode, deviating from the JLS. Because the base type of the bound is " "``Object``, this should produce no user-visible differences except to " "tools that implement JSpecify nullness analysis." msgstr "" #: ../../tsttcpw.rst:261 msgid "" "Whenever a JLS rule refers specifically to ````, disregard it, and " "instead apply the rules for ````, where ``T`` has a base " "type of ``Object`` and the nullness operator defined by this section." msgstr "" #: ../../tsttcpw.rst:268 msgid "Bound of an ``Object``-bounded type parameter" msgstr "" #: ../../tsttcpw.rst:270 msgid "" "In source, an ``Object``-bounded type parameter can be writen in either " "of 2 ways:" msgstr "" #: ../../tsttcpw.rst:273 msgid "````" msgstr "" #: ../../tsttcpw.rst:274 msgid "" "```` with no JSpecify nullness type annotations on the " "bound" msgstr "" #: ../../tsttcpw.rst:277 msgid "" "See `JLS 4.4 " "`__." msgstr "" #: ../../tsttcpw.rst:280 msgid "" "In bytecode, ```` and ```` are both represented as a" " type parameter with only a single upper bound, ``Object``, and no " "JSpecify nullness type annotations on the bound." msgstr "" #: ../../tsttcpw.rst:284 msgid "" "If an ``Object``-bounded type parameter appears in a `null-aware context " "<#null-aware-context>`__, then its bound has a `base type " "`__ of ``Object`` " "and a `nullness operator <#nullness-operator>`__ of ``NO_CHANGE``." msgstr "" #: ../../tsttcpw.rst:290 msgid "" "Note that this gives ```` a different bound than ```` (though only " "in a null-aware context)." msgstr "" #: ../../tsttcpw.rst:293 msgid "" "If an ``Object``-bounded type parameter appears outside a null-aware " "context, then its bound has a base type of ``Object`` and a nullness " "operator of ``UNSPECIFIED``." msgstr "" #: ../../tsttcpw.rst:297 msgid "" "All these rules match the behavior of `our normal rules <#augmented-type-" "of-usage>`__ for determining the `augmented type <#augmented-type>`__ of " "the bound ``Object``. The only “special” part is that we consider the " "source code ```` to have a bound of ``Object``, just as it does when " "compiled to bytecode." msgstr "" #: ../../tsttcpw.rst:306 msgid "Augmented null types" msgstr "" #: ../../tsttcpw.rst:308 msgid "" "The JLS refers to “the null type.” In this spec, we assign a `nullness " "operator <#nullness-operator>`__ to all types, including the null type. " "This produces multiple null types:" msgstr "" #: ../../tsttcpw.rst:312 msgid "" "the null `base type " "`__ with nullness " "operator ``NO_CHANGE``: the “bottom”/“nothing” type used in `capture " "conversion <#capture-conversion>`__" msgstr "" #: ../../tsttcpw.rst:317 msgid "No value, including ``null`` itself, has this type." msgstr "" #: ../../tsttcpw.rst:319 msgid "the null base type with nullness operator ``MINUS_NULL``" msgstr "" #: ../../tsttcpw.rst:321 msgid "" "This is equivalent to the previous type. Tools may use the 2 " "interchangeably." msgstr "" #: ../../tsttcpw.rst:324 msgid "" "the null base type with nullness operator ``UNION_NULL``: the type of the" " null reference" msgstr "" #: ../../tsttcpw.rst:327 msgid "the null base type with nullness operator ``UNSPECIFIED``" msgstr "" #: ../../tsttcpw.rst:329 msgid "This may be relevant only in implementation code." msgstr "" #: ../../tsttcpw.rst:334 msgid "The least convenient world and the most convenient world" msgstr "" #: ../../tsttcpw.rst:336 msgid "" "Some of the rules in this spec come in 2 versions, 1 for “the least " "convenient world” and 1 for “the most convenient world.”" msgstr "" #: ../../tsttcpw.rst:339 msgid "Tools may implement either or both versions of the rules." msgstr "" #: ../../tsttcpw.rst:341 msgid "" "Our goal is to allow tools and their users to choose their desired level " "of strictness in the presence of ``UNSPECIFIED``. “The least convenient " "world” usually assumes that types are incompatible unless it has enough " "information to prove they are compatible; “the most convenient world” " "assumes that types are compatible unless it has enough information to " "prove they are incompatible." msgstr "" #: ../../tsttcpw.rst:348 msgid "" "Thus, strict tools may want to implement the least-convenient-world " "version of rules, and lenient tools may wish to implement the most-" "convenient-world version. Or a tool might implement both and let users " "select which rules to apply." msgstr "" #: ../../tsttcpw.rst:353 msgid "" "Another possibility is for a tool to implement both versions and to use " "that to distinguish between “errors” and “warnings.” Such a tool might " "run each check first in the least convenient world and then, if the check" " fails, run it again in the most convenient world. If the check fails in " "both worlds, the tool would produce an error. If it passes only because " "of the most convenient interpretation, the tool would produce a warning." msgstr "" #: ../../tsttcpw.rst:361 msgid "" "The main body of each section describes the *least*-convenient-world " "rule. If the most-convenient-world rule differs, the differences are " "explained at the end." msgstr "" #: ../../tsttcpw.rst:368 msgid "Propagating the most/least convenient world" msgstr "" #: ../../tsttcpw.rst:370 msgid "" "When one rule in this spec refers to another, it refers to the rule for " "the same “world.” For example, when the rules for `containment " "<#containment>`__ refer to the rules for `subtyping <#subtyping>`__, the " "most-convenient-world containment check applies the most-convenient-world" " subtyping check, and the least-convenient-world containment check " "applies the least-convenient-world subtyping check." msgstr "" #: ../../tsttcpw.rst:378 msgid "" "This applies even if a rule says it is the same for both worlds: It means" " “the same except that any other rules are applied in the corresponding " "world.”" msgstr "" #: ../../tsttcpw.rst:383 msgid "Same type" msgstr "" #: ../../tsttcpw.rst:385 msgid "" "``S`` and ``T`` are the same type if ``S`` is a `subtype <#subtyping>`__ " "of ``T`` and ``T`` is a subtype of ``S``." msgstr "" #: ../../tsttcpw.rst:389 msgid "Subtyping" msgstr "" #: ../../tsttcpw.rst:391 msgid "``A`` is a subtype of ``F`` if both of the following conditions are met:" msgstr "" #: ../../tsttcpw.rst:393 msgid "" "``A`` is a subtype of ``F`` according to the `nullness-delegating " "subtyping rules for Java <#nullness-delegating-subtyping>`__." msgstr "" #: ../../tsttcpw.rst:395 msgid "``A`` is a `nullness subtype <#nullness-subtyping>`__ of ``F``." msgstr "" #: ../../tsttcpw.rst:400 msgid "Nullness-delegating subtyping rules for Java" msgstr "" #: ../../tsttcpw.rst:402 msgid "" "The Java subtyping rules are defined in `JLS 4.10 " "`__." " We add to them as follows:" msgstr "" #: ../../tsttcpw.rst:406 msgid "" "`As always <#concept-references>`__, interpret the Java rules as " "operating on `augmented types <#augmented-type>`__, not `base types " "`__. However, when" " applying the Java direct-supertype rules themselves, *ignore* the " "`nullness operator <#nullness-operator>`__ of the input types and output " "types. The augmented types matter only when the Java rules refer to " "*other* rules that are defined in this spec. *Those* rules respect the " "nullness operator of some type components — but never the nullness " "operator of the type component that represents the whole input or output " "type." msgstr "" #: ../../tsttcpw.rst:417 msgid "" "To “ignore” the output’s nullness operator, we recommend outputting a " "value of ``NO_CHANGE``, since that is valid for all types, including " "`intersection types <#intersection-types>`__." msgstr "" #: ../../tsttcpw.rst:421 msgid "" "When the Java array rules require one type to be a *direct* supertype of " "another, consider the direct supertypes of ``T`` to be *every* type that " "``T`` is a `subtype <#subtyping>`__ of (as always, applying the " "definition of subtyping in this spec)." msgstr "" #: ../../tsttcpw.rst:427 msgid "Nullness subtyping" msgstr "" #: ../../tsttcpw.rst:429 msgid "" "The primary complication in subtyping comes from type-variable usages. " "Our rules for them must account for every combination of type arguments " "with which a given generic type can be parameterized." msgstr "" #: ../../tsttcpw.rst:433 msgid "" "``A`` is a nullness subtype of ``F`` if any of the following conditions " "are met:" msgstr "" #: ../../tsttcpw.rst:436 msgid "" "``F`` is `trusted null-inclusive under every parameterization <#trusted-" "null-inclusive-under-every-parameterization>`__." msgstr "" #: ../../tsttcpw.rst:438 msgid "" "``A`` is `trusted null-exclusive under every parameterization <#trusted-" "null-exclusive-under-every-parameterization>`__." msgstr "" #: ../../tsttcpw.rst:440 msgid "" "``A`` has a `nullness-subtype-establishing path <#nullness-subtype-" "establishing-path>`__ to any type whose base type is the same as the base" " type of ``F``." msgstr "" #: ../../tsttcpw.rst:444 msgid "Nullness subtyping (and thus subtyping itself) is *not* transitive." msgstr "" #: ../../tsttcpw.rst:446 msgid "" "(Contrast this with our `nullness-delegating subtyping <#nullness-" "delegating-subtyping>`__ rules and `containment <#containment>`__ rules: " "Each of those is defined as a transitive closure. However, technically " "speaking, `there are cases in which those should not be transitive, " "either `__. Fortunately, this “mostly transitive” " "behavior is exactly the behavior that implementations are likely to " "produce naturally. Maybe someday we will find a way to specify this fully" " correctly.)" msgstr "" #: ../../tsttcpw.rst:456 msgid "Nullness subtyping (and thus subtyping itself) is *not* reflexive." msgstr "" #: ../../tsttcpw.rst:458 msgid "" "It does end up being reflexive in the `most convenient world <#multiple-" "worlds>`__. We don’t state that as a rule for 2 reasons: First, it arises" " naturally from the definitions in that world. Second, we don’t want to " "suggest that subtyping is reflexive in the `least convenient world " "<#multiple-worlds>`__." msgstr "" #: ../../tsttcpw.rst:465 msgid "Trusted null-inclusive under every parameterization" msgstr "" #: ../../tsttcpw.rst:467 msgid "" "A type is trusted null-inclusive under every parameterization if it meets" " either of the following conditions:" msgstr "" #: ../../tsttcpw.rst:470 msgid "Its `nullness operator <#nullness-operator>`__ is ``UNION_NULL``." msgstr "" #: ../../tsttcpw.rst:471 msgid "" "It is an `intersection type <#intersection-types>`__ whose elements all " "are trusted null-inclusive under every parameterization." msgstr "" #: ../../tsttcpw.rst:474 msgid "" "**Most convenient world:** The rule is the same except that the " "requirement for “``UNION_NULL``” is loosened to “``UNION_NULL`` or " "``UNSPECIFIED``.”" msgstr "" #: ../../tsttcpw.rst:479 msgid "Trusted null-exclusive under every parameterization" msgstr "" #: ../../tsttcpw.rst:481 msgid "" "A type is trusted null-exclusive under every parameterization if it has a" " `nullness-subtype-establishing path <#nullness-subtype-establishing-" "path>`__ to either of the following:" msgstr "" #: ../../tsttcpw.rst:486 msgid "" "any type whose `nullness operator <#nullness-operator>`__ is " "``MINUS_NULL``" msgstr "" #: ../../tsttcpw.rst:489 msgid "any augmented class or array type" msgstr "" #: ../../tsttcpw.rst:491 msgid "" "This rule refers specifically to a “class or array type,” as distinct " "from other types like type variables and `intersection types " "<#intersection-types>`__." msgstr "" #: ../../tsttcpw.rst:496 msgid "Nullness-subtype-establishing path" msgstr "" #: ../../tsttcpw.rst:498 msgid "" "``A`` has a nullness-subtype-establishing path to ``F`` if both of the " "following hold:" msgstr "" #: ../../tsttcpw.rst:501 msgid "" "``A`` has `nullness operator <#nullness-operator>`__ ``NO_CHANGE`` or " "``MINUS_NULL``." msgstr "" #: ../../tsttcpw.rst:504 msgid "" "There is a path from ``A`` to ``F`` through `nullness-subtype-" "establishing direct-supertype edges <#nullness-subtype-establishing-" "direct-supertype-edges>`__." msgstr "" #: ../../tsttcpw.rst:508 msgid "" "The path may be empty. That is, ``A`` has a nullness-subtype-establishing" " path to itself — as long as it has one of the required nullness " "operators." msgstr "" #: ../../tsttcpw.rst:512 msgid "" "**Most convenient world:** The rules are the same except that the " "requirement for “``NO_CHANGE`` or ``MINUS_NULL``” is loosened to " "“``NO_CHANGE``, ``MINUS_NULL``, or ``UNSPECIFIED``.”" msgstr "" #: ../../tsttcpw.rst:517 msgid "Nullness-subtype-establishing direct-supertype edges" msgstr "" #: ../../tsttcpw.rst:519 msgid "" "``T`` has nullness-subtype-establishing direct-supertype edges to the " "union of the nodes computed by the following 2 rules:" msgstr "" #: ../../tsttcpw.rst:522 msgid "Upper-bound rule:" msgstr "" #: ../../tsttcpw.rst:524 msgid "" "if ``T`` is an augmented `intersection type <#intersection-types>`__: all" " the intersection type’s elements whose `nullness operator <#nullness-" "operator>`__ is ``NO_CHANGE`` or ``MINUS_NULL``" msgstr "" #: ../../tsttcpw.rst:527 msgid "" "if ``T`` is an augmented type variable: all the corresponding type " "parameter’s upper bounds whose nullness operator is ``NO_CHANGE`` or " "``MINUS_NULL``" msgstr "" #: ../../tsttcpw.rst:530 ../../tsttcpw.rst:544 msgid "otherwise: no nodes" msgstr "" #: ../../tsttcpw.rst:532 msgid "Lower-bound rule:" msgstr "" #: ../../tsttcpw.rst:534 msgid "" "for every type parameter ``P`` that has a lower bound whose `base type " "`__ is the same as" " ``T``\\ ’s base type and whose nullness operator is ``NO_CHANGE``: the " "type variable ``P``" msgstr "" #: ../../tsttcpw.rst:539 msgid "" "TODO(cpovirk): What if the lower bound has some other nullness operator? " "I’m pretty sure that we want to allow ``UNSPECIFIED`` in the most " "convenient world (as we did before my recent edits), and we may want to " "allow more." msgstr "" #: ../../tsttcpw.rst:546 msgid "" "**Most convenient world:** The rules are the same except that the " "requirements for “``NO_CHANGE`` or ``MINUS_NULL``” are loosened to " "“``NO_CHANGE``, ``MINUS_NULL``, or ``UNSPECIFIED``.”" msgstr "" #: ../../tsttcpw.rst:551 msgid "Containment" msgstr "" #: ../../tsttcpw.rst:553 msgid "" "The Java rules are defined in `JLS 4.5.1 " "`__." " We add to them as follows:" msgstr "" #: ../../tsttcpw.rst:557 msgid "" "Disregard the 2 rules that refer to a bare ``?``. Instead, treat ``?`` " "like ``? extends Object``, where the `nullness operator <#nullness-" "operator>`__ of the ``Object`` bound is specified by `“Bound of an " "unbounded wildcard.” <#unbounded-wildcard>`__" msgstr "" #: ../../tsttcpw.rst:562 ../../tsttcpw.rst:686 msgid "" "This is just a part of our universal rule to treat a bare ``?`` like ``? " "extends Object``." msgstr "" #: ../../tsttcpw.rst:565 msgid "" "The rule written specifically for ``? extends Object`` applies only if " "the nullness operator of the ``Object`` bound is ``UNION_NULL``." msgstr "" #: ../../tsttcpw.rst:568 msgid "" "When the JLS refers to the same type ``T`` on both sides of a rule, the " "rule applies if and only if this spec defines the 2 types to be the `same" " type <#same-type>`__." msgstr "" #: ../../tsttcpw.rst:572 msgid "" "**Most convenient world:** The rules are the same except that the " "requirement for “``UNION_NULL``” is loosened to “``UNION_NULL`` or " "``UNSPECIFIED``.”" msgstr "" #: ../../tsttcpw.rst:577 msgid "Substitution" msgstr "" #: ../../tsttcpw.rst:579 msgid "" "Substitution on Java base types barely requires an explanation: See `JLS " "1.3 " "`__." " Substitution on `augmented types <#augmented-type>`__, however, is " "trickier: If ``Map.get`` returns “``V`` with `nullness operator " "<#nullness-operator>`__ ``UNION_NULL``,” and if a user has a map whose " "value type is “``String`` with nullness operator ``UNSPECIFIED``,” then " "what does its ``get`` method return? Naive substitution would produce " "“``String`` with nullness operator ``UNSPECIFIED`` with nullness operator" " ``UNION_NULL``.” To reduce that to a proper augmented type with a single" " nullness operator, we define this process." msgstr "" #: ../../tsttcpw.rst:592 msgid "" "To substitute each type argument ``Aᵢ`` for each corresponding type " "parameter ``Pᵢ``:" msgstr "" #: ../../tsttcpw.rst:595 msgid "" "For every type-variable usage ``V`` whose `base type " "`__ is ``Pᵢ``, " "replace ``V`` with the result of the following operation:" msgstr "" #: ../../tsttcpw.rst:599 msgid "" "If ``V`` is `trusted null-exclusive under every parameterization " "<#trusted-null-exclusive-under-every-parameterization>`__ in the `least " "convenient world <#multiple-worlds>`__, then replace it with the result " "of `applying <#applying-operator>`__ ``MINUS_NULL`` to ``Aᵢ``." msgstr "" #: ../../tsttcpw.rst:605 msgid "" "This is the one instance in which a rule references another rule to be " "run under a *different* “world.” Normally, all rules are run `under the " "same “world.” <#propagating-multiple-worlds>`__ But in this instance, the" " null-exclusivity rule (and all rules that it in turn applies) are always" " run in the least convenient world." msgstr "" #: ../../tsttcpw.rst:613 msgid "" "This special case improves behavior in “the ``ImmutableList.Builder`` " "case”: Consider an unannotated user of that class. Its builder will have " "an element type whose `nullness operator <#nullness-operator>`__ is " "``UNSPECIFIED``. Without this special case, " "``builder.add(objectUnionNull)`` would pass the subtyping check in the " "`most convenient world <#multiple-worlds>`__. This would happen even " "though we have enough information to know that the parameter to ``add`` " "is universally null-exclusive — even in the most convenient world. The " "special case here makes that subtyping check fail." msgstr "" #: ../../tsttcpw.rst:624 msgid "" "Otherwise, replace ``V`` with the result of applying the nullness " "operator of ``V`` to ``Aᵢ``." msgstr "" #: ../../tsttcpw.rst:630 msgid "Applying a nullness operator to an augmented type" msgstr "" #: ../../tsttcpw.rst:632 msgid "" "The process of applying a `nullness operator <#nullness-operator>`__ " "requires 2 inputs:" msgstr "" #: ../../tsttcpw.rst:635 msgid "the nullness operator to apply" msgstr "" #: ../../tsttcpw.rst:636 msgid "" "the `augmented type <#augmented-type>`__ (which, again, includes a " "`nullness operator <#nullness-operator>`__ for that type) to apply it to" msgstr "" #: ../../tsttcpw.rst:640 msgid "The result of the process is an augmented type." msgstr "" #: ../../tsttcpw.rst:642 msgid "The process is as follows:" msgstr "" #: ../../tsttcpw.rst:644 msgid "" "First, based on the pair of nullness operators (the one to apply and the " "one from the augmented type), compute a “desired nullness operator.” Do " "so by applying the following rules in order. Once one condition is met, " "skip the remaining conditions." msgstr "" #: ../../tsttcpw.rst:649 msgid "" "If the nullness operator to apply is ``MINUS_NULL``, the desired nullness" " operator is ``MINUS_NULL``." msgstr "" #: ../../tsttcpw.rst:651 msgid "" "If either nullness operator is ``UNION_NULL``, the desired nullness " "operator is ``UNION_NULL``." msgstr "" #: ../../tsttcpw.rst:653 msgid "" "If either nullness operator is ``UNSPECIFIED``, the desired nullness " "operator is ``UNSPECIFIED``." msgstr "" #: ../../tsttcpw.rst:655 msgid "The desired nullness operator is ``NO_CHANGE``." msgstr "" #: ../../tsttcpw.rst:657 msgid "" "Then, if the input augmented type is *not* an `intersection type " "<#intersection-types>`__, the output is the same as the input but with " "its nullness operator replaced with the desired nullness operator." msgstr "" #: ../../tsttcpw.rst:661 msgid "" "Otherwise, the output is an intersection type. For every element ``Tᵢ`` " "of the input type, the output type has an element that is the result of " "applying the desired nullness operator to ``Tᵢ``." msgstr "" #: ../../tsttcpw.rst:665 msgid "" "In this case, the desired nullness operator is always equal to the " "nullness operator to apply that was an input to this process. That’s " "because the nullness operator of the intersection type itself is defined " "to always be ``NO_CHANGE``." msgstr "" #: ../../tsttcpw.rst:671 msgid "Capture conversion" msgstr "" #: ../../tsttcpw.rst:673 msgid "" "The Java rules are defined in `JLS 5.1.10 " "`__." " We add to them as follows:" msgstr "" #: ../../tsttcpw.rst:677 msgid "" "The parameterized type that is the output of the conversion has the same " "`nullness operator <#nullness-operator>`__ as the parameterized type that" " is the input type." msgstr "" #: ../../tsttcpw.rst:681 msgid "" "Disregard the JLS rule about ````. Instead, treat ``?`` like ``? " "extends Object``, where the `nullness operator <#nullness-operator>`__ of" " the ``Object`` bound is specified by `“Bound of an unbounded wildcard.” " "<#unbounded-wildcard>`__" msgstr "" #: ../../tsttcpw.rst:689 msgid "" "When a rule generates a lower bound that is the null type, we specify " "that its nullness operator is ``NO_CHANGE``. (See `“Augmented null " "types.” <#null-types>`__)" msgstr "" jspecify-1.0.0/docs/package-lock.json000066400000000000000000022220361464555076100175140ustar00rootroot00000000000000{ "name": "jspecify", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "jspecify", "version": "0.0.0", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/preset-classic": "3.4.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", "react-dom": "^18.0.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.4.0", "@docusaurus/types": "3.4.0" }, "engines": { "node": ">=18.0" } }, "node_modules/@algolia/autocomplete-core": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", "license": "MIT", "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", "@algolia/autocomplete-shared": "1.9.3" } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.9.3" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "node_modules/@algolia/autocomplete-preset-algolia": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.9.3" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "node_modules/@algolia/autocomplete-shared": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "node_modules/@algolia/cache-browser-local-storage": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", "license": "MIT", "dependencies": { "@algolia/cache-common": "4.24.0" } }, "node_modules/@algolia/cache-common": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", "license": "MIT" }, "node_modules/@algolia/cache-in-memory": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", "license": "MIT", "dependencies": { "@algolia/cache-common": "4.24.0" } }, "node_modules/@algolia/client-account": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/client-search": "4.24.0", "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-analytics": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/client-search": "4.24.0", "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-common": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-personalization": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-search": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/events": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", "license": "MIT" }, "node_modules/@algolia/logger-common": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", "license": "MIT" }, "node_modules/@algolia/logger-console": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", "license": "MIT", "dependencies": { "@algolia/logger-common": "4.24.0" } }, "node_modules/@algolia/recommend": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", "license": "MIT", "dependencies": { "@algolia/cache-browser-local-storage": "4.24.0", "@algolia/cache-common": "4.24.0", "@algolia/cache-in-memory": "4.24.0", "@algolia/client-common": "4.24.0", "@algolia/client-search": "4.24.0", "@algolia/logger-common": "4.24.0", "@algolia/logger-console": "4.24.0", "@algolia/requester-browser-xhr": "4.24.0", "@algolia/requester-common": "4.24.0", "@algolia/requester-node-http": "4.24.0", "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/requester-browser-xhr": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0" } }, "node_modules/@algolia/requester-common": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", "license": "MIT" }, "node_modules/@algolia/requester-node-http": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0" } }, "node_modules/@algolia/transporter": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", "license": "MIT", "dependencies": { "@algolia/cache-common": "4.24.0", "@algolia/logger-common": "4.24.0", "@algolia/requester-common": "4.24.0" } }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-module-transforms": "^7.24.7", "@babel/helpers": "^7.24.7", "@babel/parser": "^7.24.7", "@babel/template": "^7.24.7", "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7", "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" } }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "license": "MIT", "dependencies": { "@babel/compat-data": "^7.24.7", "@babel/helper-validator-option": "^7.24.7", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.7", "@babel/helper-optimise-call-expression": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "license": "MIT", "dependencies": { "@babel/template": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-wrap-function": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.7", "@babel/helper-optimise-call-expression": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", "license": "MIT", "dependencies": { "@babel/helper-function-name": "^7.24.7", "@babel/template": "^7.24.7", "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "license": "MIT", "dependencies": { "@babel/template": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight/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==", "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/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==", "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/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==", "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/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==", "license": "MIT" }, "node_modules/@babel/highlight/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==", "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/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==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/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==", "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/@babel/parser": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "license": "MIT", "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { "@babel/core": "^7.0.0-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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "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==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-generator-functions": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-remap-async-to-generator": "^7.24.7", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-class-properties": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-class-static-block": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-transform-classes": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.24.7", "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-private-methods": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-constant-elements": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz", "integrity": "sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-display-name": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz", "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-jsx": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-development": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", "license": "MIT", "dependencies": { "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-runtime": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.1", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typescript": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz", "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/preset-env": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", "license": "MIT", "dependencies": { "@babel/compat-data": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-validator-option": "^7.24.7", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-import-assertions": "^7.24.7", "@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", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.24.7", "@babel/plugin-transform-async-generator-functions": "^7.24.7", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoped-functions": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.24.7", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-class-static-block": "^7.24.7", "@babel/plugin-transform-classes": "^7.24.7", "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.7", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", "@babel/plugin-transform-dynamic-import": "^7.24.7", "@babel/plugin-transform-exponentiation-operator": "^7.24.7", "@babel/plugin-transform-export-namespace-from": "^7.24.7", "@babel/plugin-transform-for-of": "^7.24.7", "@babel/plugin-transform-function-name": "^7.24.7", "@babel/plugin-transform-json-strings": "^7.24.7", "@babel/plugin-transform-literals": "^7.24.7", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.7", "@babel/plugin-transform-modules-systemjs": "^7.24.7", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-new-target": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", "@babel/plugin-transform-numeric-separator": "^7.24.7", "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-object-super": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.7", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-property-literals": "^7.24.7", "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/plugin-transform-reserved-words": "^7.24.7", "@babel/plugin-transform-shorthand-properties": "^7.24.7", "@babel/plugin-transform-spread": "^7.24.7", "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-template-literals": "^7.24.7", "@babel/plugin-transform-typeof-symbol": "^7.24.7", "@babel/plugin-transform-unicode-escapes": "^7.24.7", "@babel/plugin-transform-unicode-property-regex": "^7.24.7", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.4", "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-react": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-validator-option": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", "@babel/plugin-transform-react-jsx": "^7.24.7", "@babel/plugin-transform-react-jsx-development": "^7.24.7", "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-typescript": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-validator-option": "^7.24.7", "@babel/plugin-syntax-jsx": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.7", "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", "license": "MIT" }, "node_modules/@babel/runtime": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.7.tgz", "integrity": "sha512-eytSX6JLBY6PVAeQa2bFlDx/7Mmln/gaEpsit5a3WEvjGfiIytEsgAwuIXCPM0xvw0v0cJn3ilq0/TvXrW0kgA==", "license": "MIT", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/parser": "^7.24.7", "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-hoist-variables": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", "@babel/parser": "^7.24.7", "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.24.7", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, "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==", "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@docsearch/css": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", "license": "MIT" }, "node_modules/@docsearch/react": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", "@docsearch/css": "3.6.0", "algoliasearch": "^4.19.1" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 19.0.0", "react": ">= 16.8.0 < 19.0.0", "react-dom": ">= 16.8.0 < 19.0.0", "search-insights": ">= 1 < 3" }, "peerDependenciesMeta": { "@types/react": { "optional": true }, "react": { "optional": true }, "react-dom": { "optional": true }, "search-insights": { "optional": true } } }, "node_modules/@docusaurus/core": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.4.0.tgz", "integrity": "sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w==", "license": "MIT", "dependencies": { "@babel/core": "^7.23.3", "@babel/generator": "^7.23.3", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-runtime": "^7.22.9", "@babel/preset-env": "^7.22.9", "@babel/preset-react": "^7.22.5", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", "@babel/runtime-corejs3": "^7.22.6", "@babel/traverse": "^7.22.8", "@docusaurus/cssnano-preset": "3.4.0", "@docusaurus/logger": "3.4.0", "@docusaurus/mdx-loader": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-common": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "autoprefixer": "^10.4.14", "babel-loader": "^9.1.3", "babel-plugin-dynamic-import-node": "^2.3.3", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", "clean-css": "^5.3.2", "cli-table3": "^0.6.3", "combine-promises": "^1.1.0", "commander": "^5.1.0", "copy-webpack-plugin": "^11.0.0", "core-js": "^3.31.1", "css-loader": "^6.8.1", "css-minimizer-webpack-plugin": "^5.0.1", "cssnano": "^6.1.2", "del": "^6.1.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "html-minifier-terser": "^7.2.0", "html-tags": "^3.3.1", "html-webpack-plugin": "^5.5.3", "leven": "^3.1.0", "lodash": "^4.17.21", "mini-css-extract-plugin": "^2.7.6", "p-map": "^4.0.0", "postcss": "^8.4.26", "postcss-loader": "^7.3.3", "prompts": "^2.4.2", "react-dev-utils": "^12.0.1", "react-helmet-async": "^1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", "rtl-detect": "^1.0.4", "semver": "^7.5.4", "serve-handler": "^6.1.5", "shelljs": "^0.8.5", "terser-webpack-plugin": "^5.3.9", "tslib": "^2.6.0", "update-notifier": "^6.0.2", "url-loader": "^4.1.1", "webpack": "^5.88.1", "webpack-bundle-analyzer": "^4.9.0", "webpack-dev-server": "^4.15.1", "webpack-merge": "^5.9.0", "webpackbar": "^5.0.2" }, "bin": { "docusaurus": "bin/docusaurus.mjs" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/cssnano-preset": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz", "integrity": "sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ==", "license": "MIT", "dependencies": { "cssnano-preset-advanced": "^6.1.2", "postcss": "^8.4.38", "postcss-sort-media-queries": "^5.2.0", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" } }, "node_modules/@docusaurus/logger": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.4.0.tgz", "integrity": "sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q==", "license": "MIT", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" } }, "node_modules/@docusaurus/mdx-loader": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz", "integrity": "sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw==", "license": "MIT", "dependencies": { "@docusaurus/logger": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", "estree-util-value-to-estree": "^3.0.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "image-size": "^1.0.2", "mdast-util-mdx": "^3.0.0", "mdast-util-to-string": "^4.0.0", "rehype-raw": "^7.0.0", "remark-directive": "^3.0.0", "remark-emoji": "^4.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", "stringify-object": "^3.3.0", "tslib": "^2.6.0", "unified": "^11.0.3", "unist-util-visit": "^5.0.0", "url-loader": "^4.1.1", "vfile": "^6.0.1", "webpack": "^5.88.1" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/module-type-aliases": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz", "integrity": "sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw==", "license": "MIT", "dependencies": { "@docusaurus/types": "3.4.0", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", "react-helmet-async": "*", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { "react": "*", "react-dom": "*" } }, "node_modules/@docusaurus/plugin-content-blog": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz", "integrity": "sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/logger": "3.4.0", "@docusaurus/mdx-loader": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-common": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "cheerio": "^1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "reading-time": "^1.5.0", "srcset": "^4.0.0", "tslib": "^2.6.0", "unist-util-visit": "^5.0.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-content-docs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz", "integrity": "sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/logger": "3.4.0", "@docusaurus/mdx-loader": "3.4.0", "@docusaurus/module-type-aliases": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-common": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "tslib": "^2.6.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-content-pages": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz", "integrity": "sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/mdx-loader": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-debug": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz", "integrity": "sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils": "3.4.0", "fs-extra": "^11.1.1", "react-json-view-lite": "^1.2.0", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-google-analytics": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz", "integrity": "sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-google-gtag": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz", "integrity": "sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-google-tag-manager": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz", "integrity": "sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-sitemap": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz", "integrity": "sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/logger": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-common": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/preset-classic": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz", "integrity": "sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/plugin-content-blog": "3.4.0", "@docusaurus/plugin-content-docs": "3.4.0", "@docusaurus/plugin-content-pages": "3.4.0", "@docusaurus/plugin-debug": "3.4.0", "@docusaurus/plugin-google-analytics": "3.4.0", "@docusaurus/plugin-google-gtag": "3.4.0", "@docusaurus/plugin-google-tag-manager": "3.4.0", "@docusaurus/plugin-sitemap": "3.4.0", "@docusaurus/theme-classic": "3.4.0", "@docusaurus/theme-common": "3.4.0", "@docusaurus/theme-search-algolia": "3.4.0", "@docusaurus/types": "3.4.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/theme-classic": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz", "integrity": "sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q==", "license": "MIT", "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/mdx-loader": "3.4.0", "@docusaurus/module-type-aliases": "3.4.0", "@docusaurus/plugin-content-blog": "3.4.0", "@docusaurus/plugin-content-docs": "3.4.0", "@docusaurus/plugin-content-pages": "3.4.0", "@docusaurus/theme-common": "3.4.0", "@docusaurus/theme-translations": "3.4.0", "@docusaurus/types": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-common": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "copy-text-to-clipboard": "^3.2.0", "infima": "0.2.0-alpha.43", "lodash": "^4.17.21", "nprogress": "^0.2.0", "postcss": "^8.4.26", "prism-react-renderer": "^2.3.0", "prismjs": "^1.29.0", "react-router-dom": "^5.3.4", "rtlcss": "^4.1.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/theme-common": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.4.0.tgz", "integrity": "sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA==", "license": "MIT", "dependencies": { "@docusaurus/mdx-loader": "3.4.0", "@docusaurus/module-type-aliases": "3.4.0", "@docusaurus/plugin-content-blog": "3.4.0", "@docusaurus/plugin-content-docs": "3.4.0", "@docusaurus/plugin-content-pages": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-common": "3.4.0", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "clsx": "^2.0.0", "parse-numeric-range": "^1.3.0", "prism-react-renderer": "^2.3.0", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/theme-search-algolia": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz", "integrity": "sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q==", "license": "MIT", "dependencies": { "@docsearch/react": "^3.5.2", "@docusaurus/core": "3.4.0", "@docusaurus/logger": "3.4.0", "@docusaurus/plugin-content-docs": "3.4.0", "@docusaurus/theme-common": "3.4.0", "@docusaurus/theme-translations": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-validation": "3.4.0", "algoliasearch": "^4.18.0", "algoliasearch-helper": "^3.13.3", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0", "utility-types": "^3.10.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/theme-translations": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz", "integrity": "sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg==", "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" } }, "node_modules/@docusaurus/types": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz", "integrity": "sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==", "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", "react-helmet-async": "^1.3.0", "utility-types": "^3.10.0", "webpack": "^5.88.1", "webpack-merge": "^5.9.0" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/utils": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.4.0.tgz", "integrity": "sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g==", "license": "MIT", "dependencies": { "@docusaurus/logger": "3.4.0", "@docusaurus/utils-common": "3.4.0", "@svgr/webpack": "^8.1.0", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", "globby": "^11.1.0", "gray-matter": "^4.0.3", "jiti": "^1.20.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", "shelljs": "^0.8.5", "tslib": "^2.6.0", "url-loader": "^4.1.1", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "@docusaurus/types": "*" }, "peerDependenciesMeta": { "@docusaurus/types": { "optional": true } } }, "node_modules/@docusaurus/utils-common": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.4.0.tgz", "integrity": "sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ==", "license": "MIT", "dependencies": { "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" }, "peerDependencies": { "@docusaurus/types": "*" }, "peerDependenciesMeta": { "@docusaurus/types": { "optional": true } } }, "node_modules/@docusaurus/utils-validation": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz", "integrity": "sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g==", "license": "MIT", "dependencies": { "@docusaurus/logger": "3.4.0", "@docusaurus/utils": "3.4.0", "@docusaurus/utils-common": "3.4.0", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" } }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } }, "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==", "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "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==", "license": "MIT", "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" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "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==", "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "license": "MIT" }, "node_modules/@mdx-js/mdx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-to-js": "^2.0.0", "estree-walker": "^3.0.0", "hast-util-to-estree": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "periscopic": "^3.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/@mdx-js/react": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", "license": "MIT", "dependencies": { "@types/mdx": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "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==", "license": "MIT", "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==", "license": "MIT", "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==", "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { "node": ">= 8" } }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "license": "MIT", "engines": { "node": ">=12.22.0" } }, "node_modules/@pnpm/network.ca-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, "engines": { "node": ">=12.22.0" } }, "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "license": "ISC" }, "node_modules/@pnpm/npm-conf": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", "config-chain": "^1.1.11" }, "engines": { "node": ">=12" } }, "node_modules/@polka/url": { "version": "1.0.0-next.25", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", "license": "MIT" }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } }, "node_modules/@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "license": "BSD-3-Clause" }, "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==", "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "node_modules/@slorber/remark-comment": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", "license": "MIT", "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.1.0", "micromark-util-symbol": "^1.0.1" } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/babel-preset": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", "license": "MIT", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@svgr/core": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "license": "MIT", "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", "cosmiconfig": "^8.1.3", "snake-case": "^3.0.4" }, "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/hast-util-to-babel-ast": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", "license": "MIT", "dependencies": { "@babel/types": "^7.21.3", "entities": "^4.4.0" }, "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@svgr/plugin-jsx": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", "license": "MIT", "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" }, "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@svgr/core": "*" } }, "node_modules/@svgr/plugin-svgo": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", "license": "MIT", "dependencies": { "cosmiconfig": "^8.1.3", "deepmerge": "^4.3.1", "svgo": "^3.0.2" }, "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { "@svgr/core": "*" } }, "node_modules/@svgr/webpack": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", "license": "MIT", "dependencies": { "@babel/core": "^7.21.3", "@babel/plugin-transform-react-constant-elements": "^7.21.3", "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.0", "@svgr/core": "8.1.0", "@svgr/plugin-jsx": "8.1.0", "@svgr/plugin-svgo": "8.1.0" }, "engines": { "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" } }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" }, "engines": { "node": ">=14.16" } }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "license": "ISC", "engines": { "node": ">=10.13.0" } }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "node_modules/@types/bonjour": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, "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==", "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/eslint": { "version": "8.56.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { "version": "4.19.5", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "node_modules/@types/gtag.js": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/history": { "version": "4.7.11", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", "license": "MIT" }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "license": "MIT" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "license": "MIT" }, "node_modules/@types/http-proxy": { "version": "1.17.14", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "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==", "license": "MIT" }, "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==", "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "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==", "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "license": "MIT" }, "node_modules/@types/node": { "version": "20.14.10", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-forge": { "version": "1.3.11", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "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==", "license": "MIT" }, "node_modules/@types/prismjs": { "version": "1.26.4", "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz", "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==", "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", "license": "MIT" }, "node_modules/@types/qs": { "version": "6.9.15", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.3", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-router": { "version": "5.1.20", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*" } }, "node_modules/@types/react-router-config": { "version": "5.0.11", "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router": "^5.1.0" } }, "node_modules/@types/react-router-dom": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router": "*" } }, "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==", "license": "MIT" }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/serve-index": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { "version": "1.15.7", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "*" } }, "node_modules/@types/sockjs": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/unist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "license": "MIT" }, "node_modules/@types/ws": { "version": "8.5.10", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { "version": "17.0.32", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "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==", "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "license": "ISC" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/helper-wasm-section": "1.12.1", "@webassemblyjs/wasm-gen": "1.12.1", "@webassemblyjs/wasm-opt": "1.12.1", "@webassemblyjs/wasm-parser": "1.12.1", "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/wasm-gen": "1.12.1", "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "license": "BSD-3-Clause" }, "node_modules/@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==", "license": "Apache-2.0" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" } }, "node_modules/accepts/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/accepts/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==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "license": "MIT", "bin": { "acorn": "bin/acorn" }, "engines": { "node": ">=0.4.0" } }, "node_modules/acorn-import-attributes": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "license": "MIT", "peerDependencies": { "acorn": "^8" } }, "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==", "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { "version": "8.3.3", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "license": "MIT", "dependencies": { "acorn": "^8.11.0" }, "engines": { "node": ">=0.4.0" } }, "node_modules/address": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "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==", "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/ajv": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js": "^4.4.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, "peerDependencies": { "ajv": "^8.0.0" }, "peerDependenciesMeta": { "ajv": { "optional": true } } }, "node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "node_modules/algoliasearch": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", "license": "MIT", "dependencies": { "@algolia/cache-browser-local-storage": "4.24.0", "@algolia/cache-common": "4.24.0", "@algolia/cache-in-memory": "4.24.0", "@algolia/client-account": "4.24.0", "@algolia/client-analytics": "4.24.0", "@algolia/client-common": "4.24.0", "@algolia/client-personalization": "4.24.0", "@algolia/client-search": "4.24.0", "@algolia/logger-common": "4.24.0", "@algolia/logger-console": "4.24.0", "@algolia/recommend": "4.24.0", "@algolia/requester-browser-xhr": "4.24.0", "@algolia/requester-common": "4.24.0", "@algolia/requester-node-http": "4.24.0", "@algolia/transporter": "4.24.0" } }, "node_modules/algoliasearch-helper": { "version": "3.22.2", "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.2.tgz", "integrity": "sha512-3YQ6eo7uYOCHeQ2ZpD+OoT3aJJwMNKEnwtu8WMzm81XmBOSCwRjQditH9CeSOQ38qhHkuGw23pbq+kULkIJLcw==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" }, "peerDependencies": { "algoliasearch": ">= 3.1 < 6" } }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-align/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==", "license": "MIT" }, "node_modules/ansi-align/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==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "engines": [ "node >= 0.8.0" ], "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "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==", "license": "MIT", "engines": { "node": ">=8" } }, "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==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" }, "engines": { "node": ">= 8" } }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, "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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/astring": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", "license": "MIT", "bin": { "astring": "bin/astring" } }, "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==", "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/autoprefixer": { "version": "10.4.19", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "funding": [ { "type": "opencollective", "url": "https://opencollective.com/postcss/" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-lite": "^1.0.30001599", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" }, "bin": { "autoprefixer": "bin/autoprefixer" }, "engines": { "node": "^10 || ^12 || >=14" }, "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" }, "engines": { "node": ">= 14.15.0" }, "peerDependencies": { "@babel/core": "^7.12.0", "webpack": ">=5" } }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "license": "MIT", "dependencies": { "object.assign": "^4.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.11", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.1", "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "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==", "license": "MIT" }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/bonjour-service": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, "node_modules/boxen": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^6.2.0", "chalk": "^4.1.2", "cli-boxes": "^3.0.0", "string-width": "^5.0.1", "type-fest": "^2.5.0", "widest-line": "^4.0.1", "wrap-ansi": "^8.0.1" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "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==", "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { "version": "4.23.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001629", "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "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==", "license": "MIT" }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "license": "MIT", "engines": { "node": ">=14.16" } }, "node_modules/cacheable-request": { "version": "10.2.14", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "license": "MIT", "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", "http-cache-semantics": "^4.1.1", "keyv": "^4.5.3", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", "responselike": "^3.0.0" }, "engines": { "node": ">=14.16" } }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camel-case": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", "lodash.memoize": "^4.1.2", "lodash.uniq": "^4.5.0" } }, "node_modules/caniuse-lite": { "version": "1.0.30001640", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "CC-BY-4.0" }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "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/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==", "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/character-entities-html4": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/character-entities-legacy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/character-reference-invalid": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "htmlparser2": "^8.0.1", "parse5": "^7.0.0", "parse5-htmlparser2-tree-adapter": "^7.0.0" }, "engines": { "node": ">= 6" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } }, "node_modules/cheerio-select": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "engines": { "node": ">= 8.10.0" }, "funding": { "url": "https://paulmillr.com/funding/" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/clean-css": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, "engines": { "node": ">= 10.0" } }, "node_modules/clean-css/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==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "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==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-boxes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "license": "MIT", "engines": { "node": ">=10" }, "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==", "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, "engines": { "node": "10.* || >= 12.*" }, "optionalDependencies": { "@colors/colors": "1.5.0" } }, "node_modules/cli-table3/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==", "license": "MIT" }, "node_modules/cli-table3/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==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/collapse-white-space": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "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==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "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==", "license": "MIT" }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "license": "MIT" }, "node_modules/combine-promises": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "license": "ISC" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, "engines": { "node": ">= 0.6" } }, "node_modules/compressible/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/compression": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", "compressible": "~2.0.16", "debug": "2.6.9", "on-headers": "~1.0.2", "safe-buffer": "5.1.2", "vary": "~1.1.2" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/compression/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==", "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, "node_modules/configstore": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^6.0.1", "graceful-fs": "^4.2.6", "unique-string": "^3.0.0", "write-file-atomic": "^3.0.3", "xdg-basedir": "^5.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/yeoman/configstore?sponsor=1" } }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/consola": { "version": "2.15.3", "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "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==", "license": "MIT" }, "node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "license": "MIT" }, "node_modules/copy-text-to-clipboard": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/copy-webpack-plugin": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", "globby": "^13.1.1", "normalize-path": "^3.0.0", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" }, "engines": { "node": ">= 14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "webpack": "^5.1.0" } }, "node_modules/copy-webpack-plugin/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, "engines": { "node": ">=10.13.0" } }, "node_modules/copy-webpack-plugin/node_modules/globby": { "version": "13.2.2", "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/copy-webpack-plugin/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/core-js": { "version": "3.37.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", "hasInstallScript": true, "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat": { "version": "3.37.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-pure": { "version": "3.37.1", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", "hasInstallScript": true, "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "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==", "license": "MIT" }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { "typescript": ">=4.9.5" }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, "engines": { "node": ">= 8" } }, "node_modules/crypto-random-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/crypto-random-string/node_modules/type-fest": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/css-declaration-sorter": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" }, "peerDependencies": { "postcss": "^8.0.9" } }, "node_modules/css-loader": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" }, "peerDependenciesMeta": { "@rspack/core": { "optional": true }, "webpack": { "optional": true } } }, "node_modules/css-minimizer-webpack-plugin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "cssnano": "^6.0.1", "jest-worker": "^29.4.3", "postcss": "^8.4.24", "schema-utils": "^4.0.1", "serialize-javascript": "^6.0.1" }, "engines": { "node": ">= 14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "webpack": "^5.0.0" }, "peerDependenciesMeta": { "@parcel/css": { "optional": true }, "@swc/css": { "optional": true }, "clean-css": { "optional": true }, "csso": { "optional": true }, "esbuild": { "optional": true }, "lightningcss": { "optional": true } } }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-tree": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/cssnano": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", "license": "MIT", "dependencies": { "cssnano-preset-default": "^6.1.2", "lilconfig": "^3.1.1" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/cssnano" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/cssnano-preset-advanced": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", "license": "MIT", "dependencies": { "autoprefixer": "^10.4.19", "browserslist": "^4.23.0", "cssnano-preset-default": "^6.1.2", "postcss-discard-unused": "^6.0.5", "postcss-merge-idents": "^6.0.3", "postcss-reduce-idents": "^6.0.3", "postcss-zindex": "^6.0.2" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/cssnano-preset-default": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "css-declaration-sorter": "^7.2.0", "cssnano-utils": "^4.0.2", "postcss-calc": "^9.0.1", "postcss-colormin": "^6.1.0", "postcss-convert-values": "^6.1.0", "postcss-discard-comments": "^6.0.2", "postcss-discard-duplicates": "^6.0.3", "postcss-discard-empty": "^6.0.3", "postcss-discard-overridden": "^6.0.2", "postcss-merge-longhand": "^6.0.5", "postcss-merge-rules": "^6.1.1", "postcss-minify-font-values": "^6.1.0", "postcss-minify-gradients": "^6.0.3", "postcss-minify-params": "^6.1.0", "postcss-minify-selectors": "^6.0.4", "postcss-normalize-charset": "^6.0.2", "postcss-normalize-display-values": "^6.0.2", "postcss-normalize-positions": "^6.0.2", "postcss-normalize-repeat-style": "^6.0.2", "postcss-normalize-string": "^6.0.2", "postcss-normalize-timing-functions": "^6.0.2", "postcss-normalize-unicode": "^6.1.0", "postcss-normalize-url": "^6.0.2", "postcss-normalize-whitespace": "^6.0.2", "postcss-ordered-values": "^6.0.2", "postcss-reduce-initial": "^6.1.0", "postcss-reduce-transforms": "^6.0.2", "postcss-svgo": "^6.0.3", "postcss-unique-selectors": "^6.0.4" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/cssnano-utils": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/csso": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "license": "MIT", "dependencies": { "css-tree": "~2.2.0" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", "npm": ">=7.0.0" } }, "node_modules/csso/node_modules/css-tree": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "license": "MIT", "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", "npm": ">=7.0.0" } }, "node_modules/csso/node_modules/mdn-data": { "version": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", "license": "MIT" }, "node_modules/debug": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "license": "MIT", "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "license": "MIT", "dependencies": { "character-entities": "^2.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decompress-response/node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "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==", "license": "MIT", "engines": { "node": ">=4.0.0" } }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, "engines": { "node": ">= 10" } }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "license": "MIT", "engines": { "node": ">=10" } }, "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==", "license": "MIT", "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-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "license": "MIT", "engines": { "node": ">=8" } }, "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==", "license": "MIT", "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==", "license": "MIT", "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/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, "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==", "license": "MIT" }, "node_modules/detect-port": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "4" }, "bin": { "detect": "bin/detect-port.js", "detect-port": "bin/detect-port.js" }, "engines": { "node": ">= 4.0.0" } }, "node_modules/detect-port-alt": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "^2.6.0" }, "bin": { "detect": "bin/detect-port", "detect-port": "bin/detect-port" }, "engines": { "node": ">= 4.2.1" } }, "node_modules/detect-port-alt/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/detect-port-alt/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "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==", "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { "node": ">=6" } }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "license": "MIT", "dependencies": { "utila": "~0.4" } }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" }, "funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } ], "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, "engines": { "node": ">= 4" }, "funding": { "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dot-prop/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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "license": "MIT" }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.4.818", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.818.tgz", "integrity": "sha512-eGvIk2V0dGImV9gWLq8fDfTTsCAeMDwZqEPMr+jMInxZdnp9Us8UpovYpRCf9NQ7VOFgrN2doNSgvISbsbNpxA==", "license": "ISC" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/emojilib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/emoticon": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz", "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/enhanced-resolve": { "version": "5.17.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" }, "engines": { "node": ">=10.13.0" } }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "license": "MIT" }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-goat": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, "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==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "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==", "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" }, "engines": { "node": ">=8.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==", "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, "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==", "license": "BSD-2-Clause", "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==", "license": "BSD-2-Clause", "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==", "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-util-attach-comments": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/estree-util-build-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/estree-util-is-identifier-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/estree-util-to-js": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/estree-util-value-to-estree": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.2.tgz", "integrity": "sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/remcohaszing" } }, "node_modules/estree-util-visit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.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==", "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/eta": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", "license": "MIT", "engines": { "node": ">=6.0.0" }, "funding": { "url": "https://github.com/eta-dev/eta?sponsor=1" } }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/eval": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", "dependencies": { "@types/node": "*", "require-like": ">= 0.1.1" }, "engines": { "node": ">= 0.8" } }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", "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==", "license": "MIT", "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/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", "serve-static": "1.15.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.10.0" } }, "node_modules/express/node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "license": "MIT" }, "node_modules/express/node_modules/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, "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==", "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "license": "MIT", "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.4" }, "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==", "license": "MIT" }, "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==", "license": "MIT", "dependencies": { "punycode": "^1.3.2" } }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fault": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", "license": "MIT", "dependencies": { "format": "^0.2.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, "engines": { "node": ">=0.8.0" } }, "node_modules/feed": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", "license": "MIT", "dependencies": { "xml-js": "^1.6.11" }, "engines": { "node": ">=0.4.0" } }, "node_modules/file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/file-loader/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "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/file-loader/node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/file-loader/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==", "license": "MIT" }, "node_modules/file-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "node_modules/filesize": { "version": "8.0.7", "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", "license": "BSD-3-Clause", "engines": { "node": ">= 0.4.0" } }, "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==", "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/find-cache-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], "license": "MIT", "engines": { "node": ">=4.0" }, "peerDependenciesMeta": { "debug": { "optional": true } } }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.8.3", "@types/json-schema": "^7.0.5", "chalk": "^4.1.0", "chokidar": "^3.4.2", "cosmiconfig": "^6.0.0", "deepmerge": "^4.2.2", "fs-extra": "^9.0.0", "glob": "^7.1.6", "memfs": "^3.1.2", "minimatch": "^3.0.4", "schema-utils": "2.7.0", "semver": "^7.3.2", "tapable": "^1.0.0" }, "engines": { "node": ">=10", "yarn": ">=1.0.0" }, "peerDependencies": { "eslint": ">= 6", "typescript": ">= 2.7", "vue-template-compiler": "*", "webpack": ">= 4" }, "peerDependenciesMeta": { "eslint": { "optional": true }, "vue-template-compiler": { "optional": true } } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "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/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.7.2" }, "engines": { "node": ">=8" } }, "node_modules/fork-ts-checker-webpack-plugin/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==", "license": "MIT", "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/fork-ts-checker-webpack-plugin/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==", "license": "MIT" }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" }, "engines": { "node": ">= 8.9.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "license": "MIT", "engines": { "node": ">= 14.17" } }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "engines": { "node": ">=0.4.x" } }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "license": "MIT", "engines": { "node": "*" }, "funding": { "type": "patreon", "url": "https://github.com/sponsors/rawify" } }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { "node": ">=14.14" } }, "node_modules/fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "license": "Unlicense" }, "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==", "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.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==", "license": "ISC" }, "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==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/github-slugger": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", "license": "ISC" }, "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", "license": "ISC", "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==", "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "license": "BSD-2-Clause" }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "license": "MIT", "dependencies": { "ini": "2.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/global-dirs/node_modules/ini": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/global-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", "which": "^1.3.1" }, "engines": { "node": ">=6" } }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "bin/which" } }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "license": "MIT", "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/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/got": { "version": "12.6.1", "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", "form-data-encoder": "^2.1.2", "get-stream": "^6.0.1", "http2-wrapper": "^2.1.10", "lowercase-keys": "^3.0.0", "p-cancelable": "^3.0.0", "responselike": "^3.0.0" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "node_modules/got/node_modules/@sindresorhus/is": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "license": "MIT", "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "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==", "license": "ISC" }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", "license": "MIT", "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" }, "engines": { "node": ">=6.0" } }, "node_modules/gray-matter/node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/gray-matter/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==", "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", "license": "MIT", "dependencies": { "duplexer": "^0.1.2" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "license": "MIT" }, "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==", "license": "MIT", "engines": { "node": ">=8" } }, "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==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-yarn": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/hast-util-from-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^8.0.0", "property-information": "^6.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-parse-selector": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-raw": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-to-estree": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^0.4.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-to-jsx-runtime": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==", "license": "MIT" }, "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", "license": "MIT", "dependencies": { "inline-style-parser": "0.2.3" } }, "node_modules/hast-util-to-parse5": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hastscript": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", "resolve-pathname": "^3.0.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0", "value-equal": "^1.0.1" } }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" } }, "node_modules/hpack.js/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, "node_modules/hpack.js/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==", "license": "MIT", "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/hpack.js/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==", "license": "MIT" }, "node_modules/hpack.js/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==", "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/html-entities": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/mdevils" }, { "type": "patreon", "url": "https://patreon.com/mdevils" } ], "license": "MIT" }, "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==", "license": "MIT" }, "node_modules/html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", "commander": "^10.0.0", "entities": "^4.4.0", "param-case": "^3.0.4", "relateurl": "^0.2.7", "terser": "^5.15.1" }, "bin": { "html-minifier-terser": "cli.js" }, "engines": { "node": "^14.13.1 || >=16.0.0" } }, "node_modules/html-minifier-terser/node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/html-webpack-plugin": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", "lodash": "^4.17.21", "pretty-error": "^4.0.0", "tapable": "^2.0.0" }, "engines": { "node": ">=10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" }, "peerDependenciesMeta": { "@rspack/core": { "optional": true }, "webpack": { "optional": true } } }, "node_modules/html-webpack-plugin/node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", "commander": "^8.3.0", "he": "^1.2.0", "param-case": "^3.0.4", "relateurl": "^0.2.7", "terser": "^5.10.0" }, "bin": { "html-minifier-terser": "cli.js" }, "engines": { "node": ">=12" } }, "node_modules/htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { "type": "github", "url": "https://github.com/sponsors/fb55" } ], "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" } }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.8" } }, "node_modules/http-parser-js": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/http-proxy-middleware": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" }, "engines": { "node": ">=12.0.0" }, "peerDependencies": { "@types/express": "^4.17.13" }, "peerDependenciesMeta": { "@types/express": { "optional": true } } }, "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" }, "engines": { "node": ">=10.19.0" } }, "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==", "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "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==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" } }, "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/image-size": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", "license": "MIT", "dependencies": { "queue": "6.0.2" }, "bin": { "image-size": "bin/image-size.js" }, "engines": { "node": ">=16.x" } }, "node_modules/immer": { "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" } }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-lazy": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", "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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infima": { "version": "0.2.0-alpha.43", "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", "license": "MIT", "engines": { "node": ">=12" } }, "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.", "license": "ISC", "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==", "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, "node_modules/inline-style-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", "license": "MIT" }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } }, "node_modules/ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/is-alphanumerical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "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==", "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/is-ci": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, "bin": { "is-ci": "bin.js" } }, "node_modules/is-core-module": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "license": "MIT", "bin": { "is-docker": "cli.js" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-hexadecimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-npm": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "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==", "license": "MIT", "engines": { "node": ">=0.12.0" } }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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==", "license": "MIT", "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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/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==", "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-reference": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", "license": "MIT", "dependencies": { "@types/estree": "*" } }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-root": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", "license": "MIT", "engines": { "node": ">=6" } }, "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==", "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "license": "MIT" }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/is-yarn-global": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", "license": "MIT", "engines": { "node": ">=12" } }, "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==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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==", "license": "MIT", "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-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "license": "MIT", "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/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/jiti": { "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "license": "MIT", "bin": { "jiti": "bin/jiti.js" } }, "node_modules/joi": { "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "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==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { "node": ">=4" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "license": "MIT" }, "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==", "license": "MIT" }, "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==", "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "license": "MIT", "bin": { "json5": "lib/cli.js" }, "engines": { "node": ">=6" } }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "license": "MIT", "dependencies": { "json-buffer": "3.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==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/latest-version": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "license": "MIT", "dependencies": { "package-json": "^8.1.0" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/launch-editor": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" } }, "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==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/lilconfig": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "license": "MIT", "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/antonk52" } }, "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==", "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" }, "engines": { "node": ">=8.9.0" } }, "node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "license": "MIT" }, "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==", "license": "MIT" }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "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==", "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "license": "MIT", "dependencies": { "tslib": "^2.0.3" } }, "node_modules/lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "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==", "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", "license": "MIT", "engines": { "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/mdast-util-directive": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-find-and-replace": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mdast-util-from-markdown": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/mdast-util-frontmatter": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mdast-util-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-autolink-literal": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/mdast-util-gfm-footnote": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-strikethrough": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-table": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-task-list-item": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-mdx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-mdx-expression": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-mdx-jsx": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-remove-position": "^5.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-mdxjs-esm": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-to-hast": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-to-markdown": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "license": "CC0-1.0" }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" } }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "license": "MIT" }, "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==", "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromark": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-core-commonmark": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-directive": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz", "integrity": "sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "parse-entities": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-frontmatter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", "license": "MIT", "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-autolink-literal": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-gfm-footnote": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-gfm-strikethrough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-gfm-table": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-gfm-tagfilter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-task-list-item": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-mdx-expression": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-mdx-jsx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", "license": "MIT", "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-extension-mdx-md": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-mdxjs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", "license": "MIT", "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-mdxjs-esm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-factory-destination": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-factory-label": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-label/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-factory-mdx-expression": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-factory-space": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "node_modules/micromark-factory-space/node_modules/micromark-util-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-factory-title": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-title/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-factory-whitespace": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-character": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^1.0.0", "micromark-util-types": "^1.0.0" } }, "node_modules/micromark-util-character/node_modules/micromark-util-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-chunked": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-classify-character": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-combine-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-decode-numeric-character-reference": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-decode-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-events-to-acorn": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-resolve-all": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-sanitize-uri": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-subtokenize": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-symbol": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark/node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark/node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark/node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "license": "MIT", "bin": { "mime": "cli.js" }, "engines": { "node": ">=4" } }, "node_modules/mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "license": "MIT", "dependencies": { "mime-db": "~1.33.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==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/mimic-response": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mini-css-extract-plugin": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" }, "engines": { "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "webpack": "^5.0.0" } }, "node_modules/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==", "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, "engines": { "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "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==", "license": "MIT" }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "node_modules/node-emoji": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", "emojilib": "^2.4.0", "skin-tone": "^2.0.0" }, "engines": { "node": ">=18" } }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "license": "MIT" }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "license": "MIT", "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "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==", "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/nprogress": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", "license": "MIT" }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, "funding": { "url": "https://github.com/fb55/nth-check?sponsor=1" } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, "engines": { "node": ">= 0.8" } }, "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "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==", "license": "ISC", "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==", "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } }, "node_modules/p-cancelable": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "license": "MIT", "engines": { "node": ">=12.20" } }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "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==", "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" }, "engines": { "node": ">=8" } }, "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==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/package-json": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", "license": "MIT", "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", "registry-url": "^6.0.0", "semver": "^7.3.7" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "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==", "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/parse-entities": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "character-entities": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/parse-entities/node_modules/@types/unist": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", "license": "MIT" }, "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==", "license": "MIT", "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" } }, "node_modules/parse-numeric-range": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", "license": "ISC" }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "license": "MIT", "dependencies": { "entities": "^4.4.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "license": "MIT", "dependencies": { "domhandler": "^5.0.2", "parse5": "^7.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "license": "(WTFPL OR MIT)" }, "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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, "node_modules/path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "license": "MIT", "dependencies": { "isarray": "0.0.1" } }, "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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/periscopic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", "is-reference": "^3.0.0" } }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pkg-dir": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/pkg-up/node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/pkg-up/node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/pkg-up/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==", "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-up/node_modules/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==", "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, "engines": { "node": ">=6" } }, "node_modules/pkg-up/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==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/postcss": { "version": "8.4.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "funding": [ { "type": "opencollective", "url": "https://opencollective.com/postcss/" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-calc": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.2.2" } }, "node_modules/postcss-colormin": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-convert-values": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-discard-comments": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-discard-duplicates": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-discard-empty": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-discard-overridden": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-discard-unused": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-loader": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", "license": "MIT", "dependencies": { "cosmiconfig": "^8.3.5", "jiti": "^1.20.0", "semver": "^7.5.4" }, "engines": { "node": ">= 14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" } }, "node_modules/postcss-merge-idents": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", "license": "MIT", "dependencies": { "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-merge-longhand": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^6.1.1" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-merge-rules": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", "cssnano-utils": "^4.0.2", "postcss-selector-parser": "^6.0.16" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-minify-font-values": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-minify-gradients": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", "license": "MIT", "dependencies": { "colord": "^2.9.3", "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-minify-params": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-minify-selectors": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-modules-local-by-default": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" }, "engines": { "node": "^10 || ^12 || >= 14" }, "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-modules-scope": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, "engines": { "node": "^10 || ^12 || >= 14" }, "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-modules-values": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" }, "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-normalize-charset": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-display-values": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-positions": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-repeat-style": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-string": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-timing-functions": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-unicode": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-url": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-whitespace": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-ordered-values": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", "license": "MIT", "dependencies": { "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-idents": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-initial": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-transforms": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-selector-parser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" }, "engines": { "node": ">=4" } }, "node_modules/postcss-sort-media-queries": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", "license": "MIT", "dependencies": { "sort-css-media-queries": "2.2.0" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { "postcss": "^8.4.23" } }, "node_modules/postcss-svgo": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^3.2.0" }, "engines": { "node": "^14 || ^16 || >= 18" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-unique-selectors": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "license": "MIT" }, "node_modules/postcss-zindex": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" } }, "node_modules/pretty-time": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/prism-react-renderer": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz", "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==", "license": "MIT", "dependencies": { "@types/prismjs": "^1.26.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": ">=16.0.0" } }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", "license": "MIT", "engines": { "node": ">=6" } }, "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==", "license": "MIT" }, "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==", "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" }, "engines": { "node": ">= 6" } }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "node_modules/property-information": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "license": "ISC" }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" }, "engines": { "node": ">= 0.10" } }, "node_modules/proxy-addr/node_modules/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==", "license": "MIT", "engines": { "node": ">= 0.10" } }, "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==", "license": "MIT" }, "node_modules/pupa": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "license": "MIT", "dependencies": { "escape-goat": "^4.0.0" }, "engines": { "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, "engines": { "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", "license": "MIT", "dependencies": { "inherits": "~2.0.3" } }, "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==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "license": "MIT" }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8" } }, "node_modules/raw-body/node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "cli.js" } }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.0", "address": "^1.1.2", "browserslist": "^4.18.1", "chalk": "^4.1.2", "cross-spawn": "^7.0.3", "detect-port-alt": "^1.1.6", "escape-string-regexp": "^4.0.0", "filesize": "^8.0.6", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.5.0", "global-modules": "^2.0.0", "globby": "^11.0.4", "gzip-size": "^6.0.0", "immer": "^9.0.7", "is-root": "^2.1.0", "loader-utils": "^3.2.0", "open": "^8.4.0", "pkg-up": "^3.1.0", "prompts": "^2.4.2", "react-error-overlay": "^6.0.11", "recursive-readdir": "^2.2.2", "shell-quote": "^1.7.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "engines": { "node": ">=14" } }, "node_modules/react-dev-utils/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-dev-utils/node_modules/loader-utils": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "license": "MIT", "engines": { "node": ">= 12.13.0" } }, "node_modules/react-dev-utils/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-dev-utils/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==", "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-dev-utils/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-dev-utils/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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/react-dev-utils/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==", "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "node_modules/react-error-overlay": { "version": "6.0.11", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", "license": "MIT" }, "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", "license": "MIT" }, "node_modules/react-helmet-async": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", "prop-types": "^15.7.2", "react-fast-compare": "^3.2.0", "shallowequal": "^1.1.0" }, "peerDependencies": { "react": "^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/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==", "license": "MIT" }, "node_modules/react-json-view-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz", "integrity": "sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA==", "license": "MIT", "engines": { "node": ">=14" }, "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0" } }, "node_modules/react-loadable": { "name": "@docusaurus/react-loadable", "version": "6.0.0", "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", "license": "MIT", "dependencies": { "@types/react": "*" }, "peerDependencies": { "react": "*" } }, "node_modules/react-loadable-ssr-addon-v5-slorber": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.3" }, "engines": { "node": ">=10.13.0" }, "peerDependencies": { "react-loadable": "*", "webpack": ">=4.41.1 || 5.x" } }, "node_modules/react-router": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", "path-to-regexp": "^1.7.0", "prop-types": "^15.6.2", "react-is": "^16.6.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" }, "peerDependencies": { "react": ">=15" } }, "node_modules/react-router-config": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2" }, "peerDependencies": { "react": ">=15", "react-router": ">=5" } }, "node_modules/react-router-dom": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", "loose-envify": "^1.3.1", "prop-types": "^15.6.2", "react-router": "5.3.4", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" }, "peerDependencies": { "react": ">=15" } }, "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==", "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, "engines": { "node": ">=8.10.0" } }, "node_modules/reading-time": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", "license": "MIT" }, "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==", "dependencies": { "resolve": "^1.1.6" }, "engines": { "node": ">= 0.10" } }, "node_modules/recursive-readdir": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "license": "MIT", "dependencies": { "minimatch": "^3.0.5" }, "engines": { "node": ">=6.0.0" } }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "license": "MIT", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" } }, "node_modules/registry-auth-token": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" }, "engines": { "node": ">=14" } }, "node_modules/registry-url": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "license": "MIT", "dependencies": { "rc": "1.2.8" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "bin": { "jsesc": "bin/jsesc" } }, "node_modules/rehype-raw": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/remark-directive": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", "micromark-extension-directive": "^3.0.0", "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/remark-emoji": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.2", "emoticon": "^4.0.1", "mdast-util-find-and-replace": "^3.0.1", "node-emoji": "^2.1.0", "unified": "^11.0.4" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/remark-frontmatter": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0", "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/remark-gfm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/remark-mdx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", "license": "MIT", "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/remark-rehype": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/remark-stringify": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", "htmlparser2": "^6.1.0", "lodash": "^4.17.21", "strip-ansi": "^6.0.1" } }, "node_modules/renderkid/node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/renderkid/node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" }, "funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, "node_modules/renderkid/node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, "engines": { "node": ">= 4" }, "funding": { "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/renderkid/node_modules/domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/renderkid/node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/renderkid/node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { "type": "github", "url": "https://github.com/sponsors/fb55" } ], "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", "domutils": "^2.5.2", "entities": "^2.0.0" } }, "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==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-like": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", "engines": { "node": "*" } }, "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==", "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "license": "MIT" }, "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==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/resolve-pathname": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", "license": "MIT" }, "node_modules/responselike": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "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", "license": "ISC", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rtl-detect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", "license": "BSD-3-Clause" }, "node_modules/rtlcss": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz", "integrity": "sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==", "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0", "postcss": "^8.4.21", "strip-json-comments": "^3.1.1" }, "bin": { "rtlcss": "bin/rtlcss.js" }, "engines": { "node": ">=12.0.0" } }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "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" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "node_modules/search-insights": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.14.0.tgz", "integrity": "sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==", "license": "MIT", "peer": true }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" }, "engines": { "node": ">=4" } }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" }, "engines": { "node": ">=10" } }, "node_modules/semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/semver-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "license": "MIT", "dependencies": { "semver": "^7.3.5" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/send/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/send/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==", "license": "MIT" }, "node_modules/send/node_modules/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-handler": { "version": "6.1.5", "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", "fast-url-parser": "1.1.3", "mime-types": "2.1.18", "minimatch": "3.1.2", "path-is-inside": "1.0.2", "path-to-regexp": "2.2.1", "range-parser": "1.2.0" } }, "node_modules/serve-handler/node_modules/path-to-regexp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", "license": "MIT" }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/serve-index/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", "statuses": ">= 1.4.0 < 2" }, "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, "engines": { "node": ">=8" } }, "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", "license": "MIT" }, "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==", "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, "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==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" }, "bin": { "shjs": "bin/shjs" }, "engines": { "node": ">=4" } }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", "license": "ISC" }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" }, "engines": { "node": ">= 10" } }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "license": "MIT" }, "node_modules/sitemap": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", "license": "MIT", "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.2.4" }, "bin": { "sitemap": "dist/cli.js" }, "engines": { "node": ">=12.0.0", "npm": ">=5.6.0" } }, "node_modules/sitemap/node_modules/@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "license": "MIT" }, "node_modules/skin-tone": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", "license": "MIT", "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" }, "engines": { "node": ">=8" } }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" } }, "node_modules/sort-css-media-queries": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", "license": "MIT", "engines": { "node": ">= 6.3.0" } }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "node_modules/source-map-support/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==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/space-separated-tokens": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/spdy-transport": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", "hpack.js": "^2.1.6", "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" } }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "license": "BSD-3-Clause" }, "node_modules/srcset": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/std-env": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "license": "MIT" }, "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==", "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/string-width/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "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==", "license": "BSD-2-Clause", "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" }, "engines": { "node": ">=4" } }, "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==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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==", "license": "MIT", "engines": { "node": ">=6" } }, "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==", "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/style-to-object": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", "license": "MIT", "dependencies": { "inline-style-parser": "0.1.1" } }, "node_modules/stylehacks": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-selector-parser": "^6.0.16" }, "engines": { "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { "postcss": "^8.4.31" } }, "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==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/svg-parser": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", "license": "MIT" }, "node_modules/svgo": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": { "svgo": "bin/svgo" }, "engines": { "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/svgo" } }, "node_modules/svgo/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/terser": { "version": "5.31.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" }, "engines": { "node": ">=10" } }, "node_modules/terser-webpack-plugin": { "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "webpack": "^5.1.0" }, "peerDependenciesMeta": { "@swc/core": { "optional": true }, "esbuild": { "optional": true }, "uglify-js": { "optional": true } } }, "node_modules/terser-webpack-plugin/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "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/terser-webpack-plugin/node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, "engines": { "node": ">= 10.13.0" } }, "node_modules/terser-webpack-plugin/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==", "license": "MIT" }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "node_modules/terser-webpack-plugin/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==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/terser/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==", "license": "MIT" }, "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==", "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "license": "MIT" }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", "license": "MIT" }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "license": "MIT" }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "license": "MIT", "engines": { "node": ">=4" } }, "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==", "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, "engines": { "node": ">=8.0" } }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "license": "0BSD" }, "node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" }, "engines": { "node": ">= 0.6" } }, "node_modules/type-is/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/type-is/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==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "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==", "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { "node": ">=14.17" } }, "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==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unist-util-is": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-position-from-estree": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-visit": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-visit-parents": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/update-browserslist-db": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "escalade": "^3.1.2", "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" } }, "node_modules/update-notifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "license": "BSD-2-Clause", "dependencies": { "boxen": "^7.0.0", "chalk": "^5.0.1", "configstore": "^6.0.0", "has-yarn": "^3.0.0", "import-lazy": "^4.0.0", "is-ci": "^3.0.1", "is-installed-globally": "^0.4.0", "is-npm": "^6.0.0", "is-yarn-global": "^0.4.0", "latest-version": "^7.0.0", "pupa": "^3.1.0", "semver": "^7.3.7", "semver-diff": "^4.0.0", "xdg-basedir": "^5.1.0" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, "node_modules/update-notifier/node_modules/boxen": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.1", "chalk": "^5.2.0", "cli-boxes": "^3.0.0", "string-width": "^5.1.2", "type-fest": "^2.13.0", "widest-line": "^4.0.1", "wrap-ansi": "^8.1.0" }, "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/update-notifier/node_modules/camelcase": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "license": "MIT", "engines": { "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/update-notifier/node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/uri-js/node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/url-loader": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "mime-types": "^2.1.27", "schema-utils": "^3.0.0" }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "file-loader": "*", "webpack": "^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { "file-loader": { "optional": true } } }, "node_modules/url-loader/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "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/url-loader/node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/url-loader/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==", "license": "MIT" }, "node_modules/url-loader/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/url-loader/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==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/url-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "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==", "license": "MIT" }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", "license": "MIT" }, "node_modules/utility-types": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "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==", "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", "license": "MIT" }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/vfile-location": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/watchpack": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" }, "engines": { "node": ">=10.13.0" } }, "node_modules/wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/webpack": { "version": "5.92.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" }, "engines": { "node": ">=10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependenciesMeta": { "webpack-cli": { "optional": true } } }, "node_modules/webpack-bundle-analyzer": { "version": "4.10.2", "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "commander": "^7.2.0", "debounce": "^1.2.1", "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", "html-escaper": "^2.0.2", "opener": "^1.5.2", "picocolors": "^1.0.0", "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { "webpack-bundle-analyzer": "lib/bin/analyzer.js" }, "engines": { "node": ">= 10.13.0" } }, "node_modules/webpack-bundle-analyzer/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/webpack-dev-middleware": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/webpack-dev-middleware/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/webpack-dev-middleware/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==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/webpack-dev-middleware/node_modules/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/webpack-dev-server": { "version": "4.15.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", "schema-utils": "^4.0.0", "selfsigned": "^2.1.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.4", "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { "webpack": "^4.37.0 || ^5.0.0" }, "peerDependenciesMeta": { "webpack": { "optional": true }, "webpack-cli": { "optional": true } } }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { "optional": true }, "utf-8-validate": { "optional": true } } }, "node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", "wildcard": "^2.0.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "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/webpack/node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/webpack/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==", "license": "MIT" }, "node_modules/webpack/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==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/webpack/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==", "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "node_modules/webpackbar": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", "license": "MIT", "dependencies": { "chalk": "^4.1.0", "consola": "^2.15.3", "pretty-time": "^1.1.0", "std-env": "^3.0.1" }, "engines": { "node": ">=12" }, "peerDependencies": { "webpack": "3 || 4 || 5" } }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" }, "engines": { "node": ">=0.8.0" } }, "node_modules/websocket-extensions": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" }, "engines": { "node": ">= 8" } }, "node_modules/widest-line": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "license": "MIT", "dependencies": { "string-width": "^5.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "license": "MIT" }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "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/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "engines": { "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { "bufferutil": { "optional": true }, "utf-8-validate": { "optional": true } } }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xml-js": { "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", "license": "MIT", "dependencies": { "sax": "^1.2.4" }, "bin": { "xml-js": "bin/cli.js" } }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yocto-queue": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "license": "MIT", "engines": { "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } } } } jspecify-1.0.0/docs/package.json000066400000000000000000000020431464555076100165560ustar00rootroot00000000000000{ "name": "jspecify", "version": "0.0.0", "private": true, "scripts": { "docusaurus": "docusaurus", "start": "docusaurus start", "build": "docusaurus build", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { "@docusaurus/core": "3.4.0", "@docusaurus/preset-classic": "3.4.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", "react-dom": "^18.0.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.4.0", "@docusaurus/types": "3.4.0" }, "browserslist": { "production": [ ">0.5%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "engines": { "node": ">=18.0" } } jspecify-1.0.0/docs/sidebars.js000066400000000000000000000024651464555076100164320ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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. */ /** * Creating a sidebar enables you to: - create an ordered group of docs - render a sidebar for each doc of that group - provide next/previous navigation The sidebars can be generated from the filesystem, or explicitly defined here. Create as many sidebars as you want. */ // @ts-check /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { // By default, Docusaurus generates a sidebar from the docs folder structure tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], // But you can create a sidebar manually /* tutorialSidebar: [ { type: 'category', label: 'Tutorial', items: ['hello'], }, ], */ }; module.exports = sidebars; jspecify-1.0.0/docs/src/000077500000000000000000000000001464555076100150605ustar00rootroot00000000000000jspecify-1.0.0/docs/src/components/000077500000000000000000000000001464555076100172455ustar00rootroot00000000000000jspecify-1.0.0/docs/src/components/HomepageFeatures/000077500000000000000000000000001464555076100224715ustar00rootroot00000000000000jspecify-1.0.0/docs/src/components/HomepageFeatures/index.js000066400000000000000000000054351464555076100241450ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 React from 'react'; import clsx from 'clsx'; import styles from './styles.module.css'; const FeatureListSvg = [ { title: 'Standard Annotations', Svg: require('@site/static/img/jspecify-landing-annot.svg').default, description: ( <> JSpecify is releasing the first artifact of tool-independent annotations for powering static analysis checks in your Java code. ), }, { title: 'Next Level Static Analysis', Svg: require('@site/static/img/jspecify-landing-bugs.svg').default, description: ( <> JSpecify defines precise semantics, letting analysis tools find more bugs, and more consistently. Library owners won't have to decide which tool to support. ), }, ]; const FeatureListPng = [ { title: 'Community Effort', Png: require('@site/static/img/jspecify-landing-community.png').default, description: ( <> JSpecify is developed by consensus of members representing a variety of stakeholders in Java static analysis, and we welcome your participation. ), }, ]; function FeatureSvg({Svg, title, description}) { return (

{title}

{description}

); } function FeaturePng({Png, title, description}) { return (

{title}

{description}

); } export default function HomepageFeatures() { return (
{FeatureListSvg.map((props, idx) => ( ))} {FeatureListPng.map((props, idx) => ( ))}
); } jspecify-1.0.0/docs/src/components/HomepageFeatures/styles.module.css000066400000000000000000000002121464555076100260050ustar00rootroot00000000000000.features { display: flex; align-items: center; padding: 2rem 0; width: 100%; } .featureSvg { height: 200px; width: 200px; } jspecify-1.0.0/docs/src/css/000077500000000000000000000000001464555076100156505ustar00rootroot00000000000000jspecify-1.0.0/docs/src/css/custom.css000066400000000000000000000025021464555076100176730ustar00rootroot00000000000000/** * Any CSS included here will be global. The classic template * bundles Infima by default. Infima is a CSS framework designed to * work well for content-centric websites. */ /* You can override the default Infima variables here. */ :root { --ifm-color-primary: #4b67aa; --ifm-color-primary-dark: #435d99; --ifm-color-primary-darker: #405890; --ifm-color-primary-darkest: #354877; --ifm-color-primary-light: #5874b5; --ifm-color-primary-lighter: #617bb9; --ifm-color-primary-lightest: #7a90c4; --ifm-code-font-size: 95%; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); font-family: 'Fira Sans', sans-serif; } /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme='dark'] { --ifm-color-primary: #69b5ce; --ifm-color-primary-dark: #52a9c6; --ifm-color-primary-darker: #46a4c3; --ifm-color-primary-darkest: #3689a4; --ifm-color-primary-light: #80c1d6; --ifm-color-primary-lighter: #8cc6d9; --ifm-color-primary-lightest: #afd8e5; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } [data-theme='dark'] .navbar__logo > img { -webkit-filter: invert(100%); /* safari 6.0 - 9.0 */ filter: invert(100%); } header.hero { background-image: url('/img/jspecify-banner-spots.svg'); background-repeat: repeat; background-size: 1200px; } jspecify-1.0.0/docs/src/pages/000077500000000000000000000000001464555076100161575ustar00rootroot00000000000000jspecify-1.0.0/docs/src/pages/about.md000066400000000000000000000034011464555076100176110ustar00rootroot00000000000000--- title: About Us --- ## Who are we? Our current members are | Organization | Projects | |-----------------------------------------------|----------------------------------------------| | [EISOP Team](https://github.com/eisop) | [EISOP](https://eisop.uwaterloo.ca) | | [Google](https://google.com) | [Android](https://www.android.com), [Error Prone](https://errorprone.info), [Guava](https://github.com/google/guava) | | [JetBrains](https://www.jetbrains.com/) | [Kotlin](https://kotlinlang.org/), [IntelliJ IDEA](https://www.jetbrains.com/idea/) | | [Meta](https://about.facebook.com) | [Infer](https://www.fbinfer.com) | | [Microsoft](https://www.microsoft.com/en-us/about) | [Azure SDK for Java](https://learn.microsoft.com/en-us/azure/developer/java/sdk/) | | [Oracle](https://www.oracle.com) | [OpenJDK](https://openjdk.java.net) | | [PMD Team](https://pmd.github.io/) | [PMD](https://pmd.github.io/) | | [Sonar](https://www.sonarsource.com/) | [SonarQube](https://www.sonarqube.org/), [SonarCloud](https://www.sonarcloud.io/), [SonarLint](http://www.sonarlint.com/) | | [Square](https://squareup.com) | (various) | | [Uber](https://uber.com) | [NullAway](https://github.com/uber/NullAway) | | [VMware](https://www.vmware.com/) | [Spring](https://tanzu.vmware.com/spring-app-framework) | ## What is our governance? Google is leading the project, by consent of the member organizations, who hold us to our commitment to make decisions by consensus. ## What are we trying to do? [Start here](/docs/start-here). jspecify-1.0.0/docs/src/pages/index.js000066400000000000000000000035671464555076100176370ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 React from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; import HomepageFeatures from '@site/src/components/HomepageFeatures'; import styles from './index.module.css'; import useBaseUrl from '@docusaurus/useBaseUrl'; function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); return (

JSpecify Banner

{siteConfig.tagline}

Learn More
); } export default function Home() { const {siteConfig} = useDocusaurusContext(); return (
); } jspecify-1.0.0/docs/src/pages/index.module.css000066400000000000000000000013101464555076100212570ustar00rootroot00000000000000/** * CSS files with the .module.css suffix will be treated as CSS modules * and scoped locally. */ .heroBanner { padding: 4rem 0; text-align: center; position: relative; overflow: hidden; } @media screen and (max-width: 996px) { .heroBanner { padding: 2rem; } } .buttons { display: flex; align-items: center; justify-content: center; } [data-theme='light'] .banner { -webkit-filter: invert(100%); /* safari 6.0 - 9.0 */ filter: invert(100%); } @import url('https://fonts.googleapis.com/css2?family=Fira+Sans&display=swap'); /* @font-face { font-family: FiraSansCondensed; src: url('https://fonts.googleapis.com/css2?family=Fira+Sans+Condensed&display=swap'); } */ jspecify-1.0.0/docs/src/pages/start-here.md000066400000000000000000000001131464555076100205520ustar00rootroot00000000000000# Oops! Please pardon our dust. This page has [moved](/docs/start-here). jspecify-1.0.0/docs/static/000077500000000000000000000000001464555076100155605ustar00rootroot00000000000000jspecify-1.0.0/docs/static/.nojekyll000066400000000000000000000000001464555076100173760ustar00rootroot00000000000000jspecify-1.0.0/docs/static/img/000077500000000000000000000000001464555076100163345ustar00rootroot00000000000000jspecify-1.0.0/docs/static/img/jspecify-banner-spots.svg000066400000000000000000000145131464555076100233060ustar00rootroot00000000000000 jspecify-1.0.0/docs/static/img/jspecify-banner.svg000066400000000000000000000241151464555076100221370ustar00rootroot00000000000000 jspecify-1.0.0/docs/static/img/jspecify-favicon.ico000066400000000000000000001051121464555076100222670ustar00rootroot00000000000000\] 4(\   @PP```@oo@` PP`@`P`0 ` `1 `1pp`1 QA!!1a ``p`!!p``p` 1A` !A` `Q` !`qp`!1`! @@@`P@0 !p! `o0!p ! `@! ! @!p1 !pp@o @ `1!Q Q`A_` @@!!P@0_ !@o`Po@pQ P@`P``Op@pP p `  @@0@@pp`0p` `` P0p @@ `@ `@`@@@O@@`0 p  @ @p 0Op`0`@0@Pp pp@ o @o@ @_P` _@p`__P @@@O_`oPp@`0 @O @  _ ` @ _`00_@o`P@@`o P  o p po  0p @_ @`o@ o p 0 pp  P` @ @0 o`oo `p `0  @P op  P_PP@oo@p000?p?????????@???>>>>>>>>???~>??????????8?jspecify-1.0.0/docs/static/img/jspecify-landing-annot.svg000066400000000000000000001510621464555076100234250ustar00rootroot00000000000000 jspecify-1.0.0/docs/static/img/jspecify-landing-bugs.svg000066400000000000000000000161031464555076100232420ustar00rootroot00000000000000 jspecify-1.0.0/docs/static/img/jspecify-landing-community.png000066400000000000000000003613711464555076100243250ustar00rootroot00000000000000PNG  IHDRt pHYs  sRGBgAMA aIDATx`[7ܫ f3l(BPJe-t{ݾh)RF(e=Vg:${jjXq%кVlY>< [=b`N YbҐ%|YThs=RRx!ǐ7z=B>I=A#tz&>FPۨGk=ޥsk B'mZBn*qjzժWRՠfV ͚К~ߌp :,+,U564(VAlPuPIFAyJ KXB'@q]jpUQm.V++k@jwMjJ, Lz2S8jT2]# ـ(@v tLGBE=I\U ,#RR6AU : .d@3$Qh@#AƦR<$-'?B4 B#Cs֕!N1D*d.uq(AkоN$8hzJ+P̈́dQ !`ta0!tBACЄ ⹠k0' B'$ndHyhB&p\uPcM h< נ;.N(\t/U/K4!"CqQ| yU> $D!՘ RdazJ | yCh!*HA\ yaGk_0W )W lB>y&A\ 9 5!@.A脜 0{1 r &(Є,rBd&<17Ձ̂Y@!t-դxdn]0NƖΫ6RHP7u/@&!tM)-D-@zb-B'X9o3M2(< ܁'B'XXUJ `A~@ !tBVpWZWMU7ťօ'LB'd9O$NT7Ar%B脌@u g0Co`4v;;n@u a-҆$6! `-$B脴ض0!(z@C1;;A \019*Ún UOEә#ys{ Xd:rBg@ 0IYGnǺ+06pShp[2T:sAw$RUOpcK'e!tZцa0*IW5t=,4]5 UO(N C&̬zvގ'X Y7⹜0)B4;̪D#:*T:-JrIYXZ N BR K@iEG8 edN*1CКVT= SPapGr[NJ $5y@i!ܱ2DƖ'BEpS %eaΖK :-zGZIT"a{s-XR "4]dF\wn iAUNn NJoWඥKkz`P̲Ʀ`En ЙeB/ua-Lf/"G HM;m`"P"aбr0ĥn ЙE0'\"ea+w^'q@,JvscK'F:D44d&M`-3 v n|@RYKT9 HY `-$Йh yaC04|eU Bgv.3)xgcSrЙA;ZjI> >nXY5߫4%f5sFbdW7BL+4?&<)ab>Y4B)AR DӀwM>m]/ťU3ED pYT3ED GXDY =BW[@!ܦvz4vhY!Bm&߃F0e~=XG$Q0nmDmWmk  M, :S@X q {j?kj{S*D<'4\s 6UYaRӄninMDMKR&p4SS ~DVu? q@尊pQKi蒨I fU0[ߎ&Bi#J\ʉVsfMbns+\M4@@p( չ`4U$+wbR/(/}E Zu5`{s ď +5rl6#2^ Ơ4J.^?0H0*y iT6QϡhTaR.noOKPBs \ E*NVp9:zSl4YEe4$6e ޥ+< B+eș[]zن4]7yIq 09hʐ\PA44|[`A4<_SxľOHPwXDs*ClCda6ѝv崕Fn Q?UͳkN*6ڝ9ZDdZ(PN%L60D\/z}>=Pj'*S &2N{:w!d6s%4R z]V<_SJ\],)> 'EV;Q霤}"u;2LJoZa8nls J?T< rډJ$ 9 p]/v9"UDȄHT`o&Mm* )NI2,ѐ: V3%5Dӄ+Us ~J,XrB& V}@.⹙TQL,a9":3?TUUALFd!bOH)CJ4._TWrB$IC f^a`E%Z.{Mdnc\c0J3lZs%1h"]:εt!hB.g[ba3J < -],sD#!$M'hOw_n|$CbпB#t@q"s4!РRG`n5Y@TɕB$(u@qpt"ƩMP[y5Tˉ + :'IZ  M7Bd ^]bIKŴ- 7Bn6U!.^f.()YACvz*|e0#O$=0T:'EЁIfQtEjBA96]en|A+W?Y <`ra-B$k m0W f2EnuF"O+D)[Nte,v۫QՄ(R, :%7-'L&OR, s !K4: ExmIsP26qVzS=A)e;7-]ZcɎ tNQ́6@F $)ۤGDjdAkKItZ(`9nz[DTON: 8Kca P6Bfia6S:d5J)0!r(`¤%06K]ӧWz+8#pB)%3sS8|]۴bgeǡ3}IcSx^'Y* H+&kuZAe ^T6ǒt(oUfOE`tV׉ B&p4UQ§dWs0*ar YBdHYS &?);0.\L9S9 / <糬eĜO,Aoz߸rgPT6(6eyl4V\ꉟη@*'/C9 ck WQQqN4 BM5 *а(|BS}D$^@9)9g8z؎IņΞA߀gPs![`'AáJ\36֌qY]q lHB=(WT[ Bf tmx3܎j(Tґ6]V? 'ȠMAH.)B7Z(`M`8x:6-=ӧ.vd18r9 y3J;8@q - )Y[]r;)S(~rqckY*ͦˋ]uN^F(IU{ߤ٫d!t@㡴*<PBM((xmmUS~2<-le Vt] af֩_*xN~v)U$MLr-`}¦[҉ ]iņMi <䶮 tT'OKو P JnVgkp@iI\t9z ܺ4fDPpԻ} YB'nVfc&мM .jJT1PSiEd!&4YXSB%VV! T:2\5i-u C06^|b@NCu KSzlPJ% :Wxfuybg'J6VYYqCsz'@%Si`afAtSO '[RJH%  y(Rtص@g@@I'dNzn&CwM#pB zΨ*uNpmh O Ar7 ⹛${NAi%$J,vRD"lBW=K]ݽp;5<+R*vsx8mEk>B ظGjb^A^-iW2'K ZT-ɞACJ c(-vv] ki^JERvH#N)h$z$&^Ѿ$DQg?i;ڄ68"(\b#yB؄1Ѹi5cٔrT M: g{ T5SR1&N,r{!- B$)~H-@Fl5i!-ۅ5zv&dMxF]OU>}S.ll-B p[^Z7p[,i ᴐH<=F{zE\dM)\Rt ٳ !xb(- iζ~ET :НR M+X,&Ad[ጹ:VT]ѓxb(- ^Y<Th"B X.'H N[Vv* U Ibn!{]O(*g[FF氐90[M~9t2>|AqC!Ci!x ZRo,,oVyp@*kE6WѾ^A1G39Q]jt AYS(!tNMH-߄⡴B]#+uc_D&)w%I.F5Ӥ;#[rȘUAtёR^rsG-9Ra!leTt&1Cjcf쉿}{I|>v;"+\T/:mTr~t*$ta# Ak{wS v{BHr)u2yx5s!U0.eEnJՓ񿟐ZeAiC^? pK2!V\:@d5@!pd9Ց&Iߎ6Sx咎]B%!_“Hx#JJ>3n. *xzIǟ~3A=]`Uft;KR V\:@*݅ T e*%-0QFN=H׿_RmeTy1}Xd Cl)4d6nN~D' ~m Ox?$1,n^[ 9s:!q.,$ }$=f !3x_Sq h4Qed|3$oCjNVK_|?/?ԏ9`]5ݮQ/c;@:kɢ: hl6΁SNshx$Swܟx;7 Z8C 艪Nɋ yǥ\0k0[jƄK86 mC? #+R%bzE[j!@4鄼ā59%En/c6عt&~T---v 5VI۰d?V  r*v)CԹ R!ʒBRVm":@M!D L7* 12RLAÆ 52a;A:TPM y {ɚ5kꫯY?ZI%pmr] \3XEdxx m':jID7UtMԔ׶v Nr!9j~ Cu RAHx*R&ĊfB ocTl: noMٲ-Ɂ3s A tHObݳ*z%UL'Y]g_0p  , s:H}c^' NHYUF&fh>fۇ6$Aګ_ Mp_DߟPfC"`2@E6V]Y(7$F'a!  )0ByNׅR]̫A%i,s=N*fsAsmhngͿ|D4޳ZQo!1!Sku=[6܍%R@z0vNrXYkzQM2aP04O>{z[ V&4M#NNnyXVTVPiY9].uA +}ŷ5蹄A2d8lՅ.1}~u2@g?Wg6jkVmE8ʷBH*AVq:*Jg&!)ԔZC*^} q,80k 8Xz^sݻ]DSS56۷ݢS> WU8ZɁON<\.YTTDTSS#g͞M /:`9cF-UWWKm *_C%~TLtWn4HaSPuӈ/KlCF`䎺TVVF}}}rƌ!߼_.>F:FieV2P1"z`5%g:PLHSX:p2):u!7y܎RSKھ}x7[o)ym{ў{E -Ƹ atpp0rsl^ө^.?yerӦM3kՔyAf wNeBGZNO"~~V*mW4CZ#652㎣yf驧ƍ6}I㦛no}[V"v}O:*Z4bSFsD}{$M[DFVSV ^?&ג!tNl4K+QʋK3N={hݺw?!9Ѻoz)1N{*!7<?@~,ϟ/=OvB(W];PO?? |qpژQ. "$C36lFBH(5("$OJbй."c~R8gaǿ#ߕ" HاU-ѷ`l2!tNҚ-=j?rDugFW-k?xDWW9};hΝҥKSNgyqʒH~B̑< }9w4OZ8\R4\*C4v/^lV:#C?7 ͧLUcIn"$h>I[ݤhrVnt捒jTXi{z'-#Ws2P"rFͿGVjo*W6E*pX/Wkݧ/yGʌ y݇ zIK;x_$T{~If $T0#rhXP@U9Cxb&N>6m~Gz o4Vۆ'zNCJVTYmE0>K93N `qXed,T瞿junٲ~_կO4>c9DiN!R}W[Pz~f4XsI1Arh8m0I!5Qmm-}s7|T7;+CylsdVf8pU5fB }KUX1:,˲}mc y*ܹG6zyM$T UΘ 9lXm:؆S:%:Sꫯ6.F=y<6,_veaÆȧU‹Iv QW1keL7۸aBՉ I)ϓj !I+8g}A_7@|Υsk( tMC{o}7ڮ]Q`Ӈ8(P'xB=ݸ#8B:kIVT[-}\I[wcn-dt Hk 7FP8 o$K\>fuS= mMC\;=nJ*"q'zNAޞj*΄Na7n&P枆'X$=6@<>) R`׮nC#"*ݼ-- y𺞝dlNu;;@>_fS!- 9s6|ƕ5]rstr/9F 'j… K. <$%zb;^4w\99@ߵ[C+||r%=>(@Kkf4#UKg׬Jg `lJ;o pR;?N.8dqIЬOq'ܧ.oMyF=k6 v3Fz&.j!F^9x륱DfM}dI*m)fCqlc'ovOpgYWG^{5k&Aa1g4NA+ҥKhѢE&\Y{ }1!t/Y׫% AN^F`?ڝwޡmٲ%g>=믽K[^3EUO9s{4rw,tZuYPU90\Jh&w D QFB\932z7 .ۘt傫l8x=NzU)%Tw>xc}aN#JVAKn\u~ԧ>E'qܹs']C?~_?_ܖCkZf Znfڽ{7}{|\>]wu4|~@p8=pG݋.G}Nn?~w*>/W:/o$G"zix"x[jh,>`-7> x}P$G)$E `8]8 p/~kǕ=U~Sm2CӦQsiGO~iyߔ~#4GQV^]SR`巿mk*!Bgyf_~SO=Ef2%%|#0B_{u={6?9sDo?i {Wa'4+R\M!Ⳓ7w]w VӕKg/I.=@Ԥ^HSjAWyfg\Y*%1Aױ? P]W8y׿oG?iFqNW@ͷ7M~ɒ.2ᴓge1=g}ԿzZ:h;q6#OW?sy?o}[tiGMEEEiYnC /^ln]q &o|"ýyGaVG_xq+rxHU$ A[KV7 Qatu:~yT}pBq&+% }vzgh.rO~2$b-|z:؂y<7mo}KjRr//Y|$9l%;m@(rRQuɈKp[h} W_}utr y7l>3lH;.P,\ Լ_,yx/7?cVTO>䉅NU?cD|C/Du?9lNSyF*-/<'}n#v7ֽ#~=Dyg:qYg~JT!rԸn$ r Bg-d,8 qPæM?Ep;kּ.g}.iqSlkkk9\u9z=omM(7 nC">ڵDs}O٤+WJC[n]vELLJM?Jxnt'CL!tl*y|wүZ%UCL?ܸqWwvudNusx$i*?F/7yaSm.Kg?3+<s^|,^#}7I<r"nxŷqҗdM47t檊w%V]PgcmdXm\Nю :U麐}-bN8DM_~3t甐 !l ?a!ߠЙBVqrojj_iR _qYge6%s;O~"x̫&^dGw(#æSdCOlMV~{!#pv4Ҷr7j@>١ 3Ÿ=d/r+<'wߍi1l?Y~8zȞ&* $ݭ>K< 3wZ:SL[HB^wiw~]AZxwޡoQ`-@kUz^enClKFbm|(TԤ]8f^lH_lKuv!ZЙb3NHלBV;,7{wH PH!uzg'}k:thM 0K o\8KsϠ]vjk+iRJ5 u;]=K=uT^DS˷94w9u4s.-#5hZFU7<@ z؀`T-)*Qvswy3G}{bٲe3uqyH^xh}GNG0I׉It ;y]@!6A,8[ZSӳYeD5H9VTdK+Wkq䔮NO*.]*͛G) w:V12nNlHCOmi@傍}ʹY< 3 ]^{patk̦+g8kԷG\2Rm4AV{^Q?wz.)A'T,!g8of۲g6ƽ uX-w}G-7ߤ իWї%ݍyi^{:T%' {P!OxޅJ"4S%خ"ag>_*tŏ?l!X(. qgwU0R;-W/ӝ%4Q;.EL\vas+\7YZvI7~!m%7n>SCwǞљ&Oa$Y:fjc-4fBTjy&ىa9 =cE]DSJC|/$T>*ep1ayh6+tmݫ[f>na:W9gu G̜S$gLүu/t6=*ѡ%sE<t28`=ױYnǩp;Uh_G֪rߣKծtь処I 9kh&0[uƣ:̈́ uX-W9>kX{/_Jz衲 E~!=/$ ѱԜ47 v6'R+[2k te}X{c=&U`B hy]⻔WU{M 9 ՈwM0rzBifBJEGE!e/jW__vGNo7'4 "m6^8u`k@QgJav}[ܖϤ>U]T@rSx.COuuT.?GWX{w]F_>9]E\Fw+ ۬vW2"|X /*ckA9DD [fp`l?䒜_3*ij&$#)(+rL4Á'OVg7d?Lm&%b6l@ik!n"1p K\%fm6gdH3s:Dǥs}],o\~sNf2zBiyY v"ɝx+_${9Fڔa/s;E^Xbȼh iD(a\UV T9Skk+w[c)<eH,ܖp_txm>9|&9ܫҍ:00nmyio[1[yYKh3~=?$myFX΄ }=kr=۱^& {CH9=+Twuex'|>20yJ+<1rJ#tɬY ;[:{>lA)+vZk9)y^>񏓦egcc#ر;İI0Х$l̈́* 4wPߗE3OW? [_|)VG'UK sQRQ-)xY[>yC{F嬴{9IOkֽMj(ϭ9&Ƭ;O>Г%BׄY=*O挅ЙF ^:e9L7*暜\׿=jT9\Γ55f ߜ5*hζ~\?^y}#HL07Yݾ~ Ε%6wF=~c^۽$G$v v=LntchU@/tn=k<>2h HC~_ўm {S$XB%џ>x룇}ӓɿ? co ciLH1_<mO.u(`hT3mn x2{;cnmn9ΦIWǗ/6a2?ݾ|~{P<9=Ʃb}P>Z?9nin ';lpb`?oBm:C/u]=DTu{W'6H=6Mӳ&ڈ!&7;ȲryQQc=WB9Lz]iemj=)[DKj-b9CiOss37w?;{w9״(ERw H_иBgͫ)jVo0c}2S?S% /`+@9BLzͭM1=k#Ƭrw߬Ѡ?㟟}cwv={/ǔ/4׺M[Zh2xl&봪{^&}hƑnC/]䝊myrX|hmA4rSGoeꫮŶmFݖ6Rs:6;!bM"ԍЙfjgM8a,eE8^jr]vњ5wNZO9ꨣ{wdW~H:,=aPl1%|PZW-/"ICЫk豵3iGk?i55tQ:v?&nYUa=&6M2p2RvUdWAַUdE/8U|c##TB繫U3JG /SWkQ`^v;EKϙ a,iVĐ7լ<ЙfZ@ H02]wJ*` ֯_iŊ͊[c/YFBoQ^U{j'^i8e`nuN."12z\7j驷L'vg iCUy)6? NnHmD{v%tX\;َCq[k?r3 ]hxj3j p먾~1]~G~;ёk@p: Ӿo#,0QCLYJvt}kUUGX^ZN| lr:tG|0UW,LŧiFza.y啗*"3rWo# ZiL%,f:ѰԘxgR)He3b>dܚaw)y}Oٙv$O<˖-Ku}MNR8縦6 ^́R(-oT|E]}tl'/^XbKя,(?= r$5Cέa*wVSC>ݠ^Q /R̓"xWr )//kqUWOΥ!=i܌^}U nݒe ƭ֮]K:*oV a'U0W 0|ݎ(WɇC -1V]iikNcinio/(&,J2Ω9DzQGS*[h65ӫ]踊X[bU^y-Vo?F_sK/DaKK< s0!XejHHxW 93pЕW^sf>p~<ܸMY-U`EZ,Y q9T:3@h;Ы\SG57kM̙3/HVVVfvY.0Ip<#;wRx睷MF$Ue:DŽj$P1VOו ϡ+"f' Ut/S%P*͛7w ͺuhӦ:#Ȋӧg9!O_0&Bf>ت*۩?rth\E=Aj>@6U ㏋WWWҥKzO%it0P)vt X|^&%Bg :!*DJ ðּ*Wd:p&0TL-\]ׯ_O555ikj3q\$Uo}UEPs+n /p[!2vnd)FO!Te?+#yCf9+覅S ?3?o|R*{{my[sGj)͖FaP(Rwa +BWMyt/O<*)nQ1۪*vy"Iǜ Vzݻ׬|N]eL$pNW;{%<8am'}&AMs|h찡qg)n8,M6Vms_cEϦeեf_i4|cW\.=Ϩ555glTq{u>S^uFg'5P j鉕y =Gȭ;G݆5Ю8i<3,8JK79rN->IЙ9񂂱qȍ*'۴i@z!yk֬U[!m 0O=*lR7L{.bE#$O/ AD3 匯kƘ вuޞkn5;}HU!o yr~fMzt HxMΑR#q$Ʊn7Tł1sl? :ieE.tfrV/ k3LeEoĸa̖-[qY΂znxxD{{,.pvw( ȡ湌K 3Z!$bPO&hke4dIDWIr.D8xΝ7WbC6UF̢O;D^L:'iUZ׉}5\VTGQrOkZs9dz.*H4YvE=[ "ˤ̟[SCkBg`^'0rJs(eæM953#x80'\ knڹ̙C#{I^"9Mu7#i&;O3$b1 W]s(g/ȡPh;S,W.=ya4G͗=c7׍8prG\PqJA^ ̏r2 yMX9+7m$1Af=u6:LȬlv]6 7^ٌ hm9n?.siL].9wԧ&:W9}1 d9mF}ΝvSNQg ~ګ{cXD[ROp|yNN]o.C*w6`ȭҠGέiЙazYpPǕν{ ,͐%!p{nH:~AK!DIcdO?Ĺ*2.hH ?/Ok%VS=nnvUeG #nS(3*lZձ,F+,՝M|*"wyF6mbC|]YF}05owP:&49wKlݻ7kK3d588⡵)*p>rE׻PX%G76Cgbol=JI^H48˜ 7tr%4=rer;K- hnx䧑O vaИ8tJ8M/r]_lL8cB㰇 3ᡒQUMQm)*?/6 &{Eqґ$TGwPuseIB9Bp5r2 ͰYJ0pʙki)ε\݃p;%d.\wӘKIb+kb~" n\DR|VCMi 5nxr)zg@9aNr2,P;Tku]CsrB Jxoo/MC2rM4Jh)eBu2nTQr4O"Qu2MUjBk4*9逢t\"n$mJ+8l}ÐUh*QUNЙ>gp;LJ=vI700@%l*L>D61&V:㪜ΘP+T:)\+ԫ"U;%F6k$nTa+*ZR\+(GϢ9ʔ3*\vDiPV?j.nx0A_dYgGSgܯ'K&tÖ2X:LhܢMuhL/rYPw+uOI͡Ļi3do4әq<|a.X:2gN_޲IY% ݺM*2M6w3Ijg n*$ ` r tfk:e/U3 pN W:TKM"nd|JJ !!4tadUT^KVG}$ϹlU7McRzRE8̼CK׉{ji^9TՕs:YL .a)!^g>+8@pq fI!|&{=HkvH:RoߔT!KNƍƪ6ax-LXMϏFvʟN(PJg̭+_SSQ*gBàjO|a!zqkG?T(6qPunʁI4}9VSTWoE[k'HAs8,)f. ^^zŜ۫JG4T^^A7v$#l,\OɧuÉj$9/Pi JKKDۓT7֮GyDqķ~gCkjj(&'"_{4ې'PL3juЙN9^_RÅĀICeK'\ Ib*JN?ˆU)6kYW'8`D,<_立ygRoC'_zS0d:>'(TrCòNQA=9 ˤL THJJJV47Ia1dHm#b:ꋉ<ߔLNΈE ˗˩-K0~|||Ϗ,b^RB,T9GiR9 ˤL +nOȞ3ffTW('ńKu* l.ewwSeEUzƉ' w&QdM;T:A %v92N k r72)ásڴiTg !5.\Oz)u%YVvft<Imk%9W(_>6ϟOȥr޼y.vWy}7Qo8vޙQUnT9Gi>gp5殲"T&HĜ0HįŒ}V~$Y1|kUv/z~W!<ꫮG~t:=VEy]r<0ŭ>G.sS!fKP"UuUr,NillP9G,&2`~z(ϹxqR_bUbUz9UjM2ouxڧ>b^z U6ghΝrժUbFjmm~si# s̡ g%ynvj+3 Ij*{S ;Q!tZzsZ-D1h 4ytC}u#<3}HSU!Чv\VESңތ=ꜫ2s,=s‚n5;ưV'M騣yE KSOkxPQvw Aw91^k=י6g,Y\s޽91ƖwV|~I^/`0Bnzgmجv C+VRPDdt!wy.3e95 Wn#KAMw;g n3K u$N[WfgKgU<.G)֦7W^y%g\x~iJZ W۩|>zZd ;!(vЫ[o#KT[~y;Reh˕M4|eCn=TC-܎8P׼<4l0s ImR g@NT9'ӂԑRKr;RZ0›liiə+޹0O0ux9@TCZ>U)a9" yXmj@wM6z1CgH~w-/rm*t;jugo$I\圏%R&c-HH&Eݗ\r1\.oMt*S]qލnןT3I412W5r}EBSvZ0l*r} 1>lN%Tr~`R:-ت7)8*ԧsH:쳥n'(,<?B׸FA[ <*U6wl{k65}dVayls? h+HBS;bv:gCdA+4L BE[q;Z\:S bKPPyꩧRiAapBW5_nU J޽m)V9p;D>d`_eTd6J 1`6Ib=46v31X"ej:- ClG}N4j_`p̓>KQ儂 ǚN~zzˌx\isގ/`g^su>\ĜU(e~O` 7SqG"ÃvZ4ۧw;- cîdClMjJ)SEa]r-//'(~8-^\O 1;lŴGi榒v?MmZ/Ľj84r1Tmdu@svE|:gnp5DClNR hxMNvu,-Bs:- ClCkNGqdORU$ aȉР;6Hd09(f(0Wq2h j^c%<qU5C0mj!3;mOvC9_5"-.>bYWhN%R KX9VN]+&H"% 7vYU Q~zg9b, 55wf bbL$ijZ{1"W=m uǚA9SUD+;mlYit𜫢j9pnvt:T%TX Ba586 ͠N8QyYC,7{lG>QalEh>ϸlֻvw`uڪMb.El.fpa|PSTYDJQsgGs*O\3Ps0zgȕL!T(oSw^KA)*Bzda+,,$Ȩ 6ЅmOnt7/| fLB^n$43! =fH}+n-"eh>jaϽ}įٯFkb.gja\SPNam,7or)o/t9P (4Ǒq3h R㾧hSsҚ <]R)tRqM7Quu5A9̳SA9<4_?TUyW۴)sX1zʭIGdRRAFqEu5N#"4 cxM A6sl:l+ 3~ї%YUUEO@k\퇴^;  b`xs׃S{;0'CxX0 H+v!<_J[3?zs=' D.y_efΖ$dW;n2 U o.'At^R&**HЗ !UxQ!jSٟ"6'^7 ([^:e:$ըGRd x'9殛՟yiW]Qi׋[ {z7kk֬)Tn>Jޑ,}lm!i7= MHm\¢**I!ۂRIڬϚnFSj׽즯SN w>O.Q*OU;ͷ|l0l})i%HIk̪ :sLcSr[ `muْ4p2&Zz~Z46b93+ZzT^^NV&~f2.׽%[hmUu*i$N*J3|8,T=o. М>&l[gzmm-:<WOI'}jF3ʏ#xm0hOv B3ݱ s93`9HU;RҦUWvUj8#闿'?jksx9|f!U(dow KKϓlS{uĕP84i?p'AАZ8.zeT[M)Z<r%?vzNj$Yc>B3." 4U\/p']sVϼv{=qmjgZp3+O1h$9͜rf޸'+57П|uwwd%KЗZt7){Eat죜f[h`V}848$[c8 C D'/~MTg rTáeqK\3iSK+EVr ukͺv?M6mڲ#hN)f5|ȫq.bRWٻ d>rܺ5ڹF-'H9i5̬ ΈZ6w'!Ȏ#8nyQG%q3}{)mx~aIۺUͱJ'=BesmI+0=\iS&g^3h\uT䨵D,uS2}n{%QC'ήߓ5j3`0:}~fP5d +V#ySmȷqU `(Zy{Ц$ǯcN"rdW8bin ~NsM&m->K~tyQN%=RWv=]kiݮ?!sTϯ< UfӮ jgjEV@'sw珥F+R*m^imfs(6ui9m]C_9En ]/P2[Zw=E^ݠ_Ϟ `pq<37BvX*<>mpo!W26'xyG~AR_v|f7Q *襭6M^NsNYǓ^MM}ߣ u9gm4LP`3l/|S>tiZ!2*6?zd;E]06'RS)eɂj&`#"Ǐx_5!"oLu&G"|K 3n(7'W9byԠ~U%U7ls.~Mh^'CsxX7 k:s7ك!Α T7$rQ=O"0.G4jCa3z_xxximtBi98Tg-;z5@gkJ WeOoؒ@? >Oc y\S8/}H ַR/W/S}twըxng>-م&;<(:s:u/L-7r"1$-i6:ڱ} d-z+x#Hˊb~_͙3?s)[6cf$x}Ý۩ yI%$H!D ys-/Mm⥪iϋ g,]Ӽ~ЋΉSʅsk!*7`:Sę#k ^+b )94ȖD(}\4~ndPl50O^P1xjjˣÊB6'+K'O' 7p:T젃}{F).N-Pש'[rw ]4xD`K/G0uB4gOZEo%T }l?9vNAt,5)aϕJ'u >U=9[\]A3mFCA7yz>OvU:ttTdYRv'>Iy]wɓN:)kzXI}MLvEv_O~H`{[/ ׅ.#L\Mș/Gڟ%I{OՁGtle*s ^N Q <xv4"Mω*g)"́¡RƜGń<-.OCg fg@J^:%"fhlsC=4HGݫVŎiKV ,ʝ/ .p뢪 3lrVܩr^m"e4 J^^fFhs2bCOW6N~]N[GvUlRzm֖jJ!& `n0z:mlDC)DNNxRxnМh]mcṜ}2t{@PQ˩',Wp?DGp +j$ݻhf VZ Bg5AU;ר}|$MsQ2/Gr*2inو\/LJ(ʸGӈ]NK/ӹU_: WaC] )OC8ޅk0v ymtôlٲ݌lH}?:Ԧ}{>i8\>@0Y2: >ϰξm)b 6#|ک>g;z{1֊: MDH> ;CClGZNFXN%Dk9Mi,JDk䁓T7+劧Ec.{ ذa=|;i ]tKhfZ+z}aN:DU8?vt~T8HiЙ ])դ OJu Yr: M=G֎%DLZ󈰑Ew5%%R~@xPU:SvP2RJMV͌ GO/JOR.b:s=G׿GWvs\W\\BcO ZR|~Ca yS8Sbo'_kѕBg^d 1nW_X.vQtqZBgACɳ;ϙL9r*2a9H3q92*×S1˩8TEQY)󡝃P™T-ԎRtgCXii)s9>i͚5RT|Tګo_nU59Ls |)裏6ZѲzonJ:ZU /R:O? $RX{{Wh 0yZ_!SϵlzVf|0ݖCס"kOX栛*tF'L,W?QANV;j- 3 v rl9;3#yKP8pTD9P|r, 7Cjy9rL;AeZECdt)ǮxOmeR;?rᇛϗׯx@U@{%+u6?x+KZK΁R/w RH~]L:iO*fv=DCh*H~].%($|[hu2\G$>/W߭%ȶ<²+>oBG}bleVK`ixCy; M=?gL}ڷ״9NGڸy{Y~_D}y.4yY=<>iԖF݄?e84BCCQ<~{OuA;jwyyzzz_+W-[6Ӗ-[ѝL&fVVVrҥfH‹Y,ߩwQ brSJXTB.ɁQL4 t$VH̥<*,Ȯkhʃ:L~U}߭aH1^P}݃4*r) cA]Ox[.Ήg0b"}1vflPthlh9eE}f\͌9T Y eeK/O*p:3OҸ MzUHO~?rN9hFfd[jC(\N=ȂwR+-x`y296g3fJJUKI]CsML}dRi0v5NF{Iu(4>q헥ؓx/ Y*6piS?hއT8Q~_+5kFm4J)ٟyb%lO_C+~&ņCChhok4h&mk7-9՜A.U -]&\) );ѭ6w t)n( /Esl6ˡ-^*E$YNE&YNeCWFPIChP({ܗTb8%-@j0Mn|¿4"iqVsILWl3rwB7^#Bw*&ח3K|P3ZN;۟W@ {ߠ6D,ͯ9svAcЬ"t&/z{ם$̡o sx?h+"276-5J4}Tŕ {<\g' Ib*PR:~U`F||{T L|x,WINJ3BaL$4*̔9^FGŬ` 'zߚ+_&QNCQ&gxٔS1lW~S(xhu3yq~)/ޟ#o f'R%2],V=!xH }KޢCҤgDPh=3g=ڶI>vg|*Ȕ@ K8u1Rru67b8l_\:js BgBMk|shdPpZU+F?~:?X4S 5LT,c'EcU{>/Ei4/kZP86Ն'w6|aK#i!m%ߒ .NL˝x>1YrK$}s"es,J\3ַQ] \k|yAj֞Tٿm7e_zzVQaX3w*뾕*4JΡkv*`ͅb?r=N>n3D6 8V$V7jl)# ohmhsue ' d3vHs"˩D4Mr9~Mj|Jxҳm:r]tt8ݬ*Zz d?`9p]· s9՟OCLJ# YÑ)K.:T!tfax,{3yA{CM_396BP AUTA)`y܇O˧v$ yxm,#Sas}qu$knFQ+f#Wr*KqÉIDN3k*.O_OZS3R|Ҷt}<8je#RAf}îi'Tg:%ݻˣ<|jp zAϹ@zc0B.E(=$4Z,/+;Q5xƂJ>1.o# BQ0I >9o@!vOVQ %:gK4nfD0fv?'ɿKb H;neVY-&*{='P׏f\ұ…q<ٰt2gkM r}v T̗!>A] `{3-BPTEՙkeu;:a󻡀):ώ;pÄtO*xfL'xfi9tg|L?̷ iCBN2d8"S<]P(JŹ.d˼S۠8%:g"sq y'2ii7Dq|8?q99e٣Q~J9N0N%wguP?\xן5 '\17İ9ȢT ?̍?SAؐz"E^H_>?o{4VP(*9/r R}3%:g63\Ӫ?v9ڀYw$F N y6q* lꥋ8j߾5k; ( E5OA_tO} L ^Q|;–Bb"Tc'Mxcvn$# V E1aSդ$֋\216HY\uU)Tq;!>|>MDMk3ճ>nKDžceZpEGx"-<\ m%tc:@ OH[ GB.Foj .k4bd{O̜~>/"oT}6BQHS=e9sQ 3UQzmH7;_!6(np ѲJm3!?^k8>j8 q*?f\ *A| %`O3Y ňҗJ8קl| KŌENN󻡨8n݃<"j,L[fi"+vX=(lJztJvYo+>@Q% mÔAWfLNensȼp!gQ .35\ɐ"/ֹ? NgpƋk\uZ [8X`\T(*b ~oTb$ԷbDTogY)/tq*4e\G3AY2sgS83CPg%R# v* ~߬+Y(` R1QӌNsaǩd\L>pǩs#nF90],<1B'A=`,ooesPOE" j`hf $L*8H[Bs:(Ȍ.8Y@E5N%x#It62Ap=.ǩX&SCx>6Jm1%zREY@L@pB1y qܮ"_Tr;1'NHgƩIr<̮ng#ex"HTܣCx>f+Q5LI+OgP2uwUb)Ȯj io4yUpb"(ѩvN-cml2gi!:q*';iNhc2$dzf)s<_z>?ݥ…-,GSBxSĠ(|]/I gDYvutMm]+^I?ehόhə];o K6BńPSRScYRq2BƩ Mn-=_紳tKjbgFpfhv#;6… vDg(<ʫ ll!")<ӏ_A߆b5 `e_93Γ(8(9`~ QS1Q3rRId,\KdʎPj;N%sN9I8>lnj ZMnzaAÄj;8Ibs1<ǕY6Btw0< EyUymF(4W&0ŀy@ז>!:g՝Q4'1 A3l& N rN28hu D"oYr',Nv<ÅrxzPF(r:ycg;678W #bَ'-<3;Yx;N[;$19SQPzmvbyd  r3c[P9ee#9XB!:/<5?5_ C{ǨcI"i넜Y7F) ENDQng)0Hpr]7{ݨb$'V ҩc[9,Aۏ#mOڮ$Di;v7 _A#:֘1үhU-UQS1)FOȇN帙0!ǩ$4_խC9dU:yYa˹dƩ ܹ<8Tܖq;JlO 1%ޓw'|!Y?בcs`f:qq]I+ q,j.z, ޭ8>-$Â

ytqey&o׃5tJg&]%ݭd=>DڔbG{fG91t:ef՞V(X+^kjELI5δcG{]}{GaΓ(bpp;# Oun3ey2 IfXbuHG# 0 RF%6>Z Ā]P*?f! "~Gs!<3w!\npuފ5s,'F1y|iߏeץSiƦcS @JlFNE SX`SCI>g aĩv8I?\' (!ǏnvYHSS8}&駑L OC awyBU99HTFm}>l{qπ2v 9h|S3;FNEQY83ݧ9ڨHp2׺q·9ÅI?Y3'qmʰ B9Nzۓ|R8/>3Tm̹j mQ V?q'9Z$^?u)μӖJeZ)߉V|mQb} Xr-.YX9Vz(;ӴxΜ*5Jc!8V[DQu 89Fm2߈ɘ-/ӗ0 '6evX?5g-4JpoO_m FRc9/V'1q_9c1~}~qmfׄo>4up-~o}{K$4v9a^+,Y7q>mpܮOqw Xb]r%תpGS{T@s_$4Mߩ D(c:fן2EX&tnG4q\'und-as dǨ/Q+}J$4Ƹ&oCI-5k1b2Zu}f %Al)*藋jN"oTEs6h(˶ߴRN7h'5҄Ξ=qG|rW8$kB4-$hύIxaBU^^_qȸَ|ɜO-e.5/Omι x~3/6c:5p7w"%<ˑc# yUWq|O㊵>BrHx(cA_#B|O>Nnē=x|gۇb1LoBNxd?kp+܆8kG09xơzHeI"l,Jnh4SNE(ѩ(YnU s:Φ'+o=h}S|,0^CHQA7Ө;iJ".kP9E_"\ۣ4:9ci<1i[>6,|JlWnUPd@n3ڈ2vy@mGؔB?3hiF\s4sО1…P8(Yǩ.wv^dz<|Ox!6eV yY9mk'я۷hojZRذ=灩~պ8W#;МO:%IQ']NtTbf{'{ug??.H˦\gs4gE1<WbPP }emUt:SWb-4!oѼzI#O .4|$ʄƩSɾXT<8q*#8dž{`RbV 7 q:JE[dtB%2G589+ظ`oJvj9>> 8Ad×S$HX_Z?[w3΋wSLtg% E^(ѩ([#G(SuN;IxZi:iH:M CGɎh?y Fp&Gv< OOf@8,VrQ3gԆAl}!j[hy`^dgOlpYL17d~a >9q:U_D?ϗ> 1!TRqzQ" jDP)D v}[cn>eqʏHpN5 Yl$2 Wv[q*##R25z O\8mԐ2uDco_u 02u S_f{$m/ٟ^-rZX@bS8(!V1Tխ,Nu: M VN0J? | sC:vDǓҏ#4I'- uHs}1a9r-'6o[6EY2Q9X9sќ3q~eHGڟg*ߢ+Z$t{^|/l ۫V`0 Lx[kPTBpNvg[E:EɉRwMFqm˦_DyeBRc~:?"C4(Rm5G^c=NI1oG¼N8蠍?6Ul;IZCMxʛRv 0w{>._4l̯ir/w}Cd o/zXri.g D E1IaM$T"_Tr;]gQFXβ 쾿? 9 thŸ{ c#\?8wRq*pEhƩ8}voΌu(. p< "ɰin^z5{X.jb}?[~by|yBksqu]݈ؖq č[r{#(ugCyP.B1L1L!Y%jfbLTL K7ut6ʄIβɂ-x%/wfoWdrYBsW'4M'Ֆ5`|o\v=;z0;{}e뚖Ԧx|?AH&G;<| {{:o0hщ@fr6B15̂RBp@&`{iNNŘ(ѩJnoL a)>NwՌzZRgJReOJrWxl1 IVϺ+a{ -Kz"XKm:ҙ-lCTf`xs-%<+e^o:q*;`PÚCPgᴆSٯD/r?E7lV+3E! >.o([HZ&bVq3!Kwlcu+2G})z3*-0hk0BܧB1UXצ4 NBeV1Jt*Es6<ڻA|^2 2'68ƏDƽח<Di8ng㩹3!dYN%}R}6-y|mzeK$+μ>HN~mir>^-]wY߻#Z|Q_+n53KON7\}fh+of6`PUp\&H ԑ2?0EL5M;<3,_%:cDbJY9zWL3-Yc(RgnV7BEED&n gi~z^ -B8)٩KlgKP(r"i9۠PFQL94B1Eݿ_PT(١f@[` oAlw \ .9I+SM̿[cZ{NJlP6aCNŔC#TL2ʀx}ɹ;Q(JȂ9g[#.NA- +gZb:jN:ũV> ڙVL 4BE &oD(1?~x[9(&Hm@{Bv}|rP(T>ɵBp eF(vf|l_b5,o_ua(& y!6HE^X'%T$]B$v Ot$9t̅B1E1m5ÄGժ B3/߶u\XA1I E\OS1WϳC&C})G*5F}-c,8=eP(F@1)nkV2ʬNoJbݍ#Gĉ;I`0H$Zbܹr JE<Ǿ}r#!%բK,)2L_[4jw $zsv\q'_NԒ]Xz0TгJmeIc\]C gA$cT5'qTrtP(DbZ*e'GR52a設Z,X@Z$' #>6;YrIB嶑b|5N[ūJpNeh!|u(&a[cT M80 $k4=DhX#2mH죴R8{ի[bJ|Pig{GGm4z0 iY-ĂWSYO<7DU)qwxCя~T+[U}{qo{'۳gȅzjMoĊ+ $o?ۿD*ޭok׮~<^ױ^ YfaUb=BK!ֆɒM<|i|x˨oU^(9]8<ѷwxrWV焉ZE#HMt@3='3{M|yqb~%gz$45$Re6i'&C]myPdNŴC#T9qۘIs({hu $h硇ħ?i/ʝɰ}v|~S^]'|Bck $>,Ob2qpAz׻~4WϿu:VDuYYn^v޷v1SgYIkH8I$(zۇΡl0ىT8u!f܏җ#&[k^R^<> '/΃9n2yB<$M hYuB@GtLgן"Ea2֞r*QpMG;TD,P!!<7)$>瓮pƏy/H}?' ,`~#a?0>Oի׌{?y{؁1YI|3KLOO~?P(PY39?az&)F[W߼5Bȫ`"eۃ[ݍcYo(zb`Dޏ?4*(k -"to%^y5AQ].ӖZsވ-G~(ㅷDj{g*(x\˽egciWŕr9WzmNٰr9G'iڤX NBט R|ӬMuܖy覲cѢEhs,#YL ;[ncO=QoKDj1O~򓬦aLK/$6lxWXBZV;qGY_(P3޽ Ջ.LŲSB ѡ-;Կ pF(=tb53tCs|,mϫ]sĎz+f߂q=qp^'^}wcai'&s"tth =Cq06o4})F'iZS$JBoZa$L)P(T *K$#u*X }ַ%RB;o`;vlG!K{w*eۮ.v睿}[q[v>_>0K_Ӹl NS]b{lsM)HM$ԴL>cUh?|bRk/7.gyNU a#^w0HXC8=gƢn$|7w܅]mxҿ- ,kmPxv,\0!Tty w4EVg[9B/]!AsÎc‰HRr Fs)X7-b9VsW +嘩$SfjÔK)%:e ;sJQniWׯ@3#J*7V,[lTe 6`,Hܾo4#s4$s<(-oy+?K@ ?T ;c=6c}K.p-n|RAsQ?O{g:u$hxp>r _Q3h8i%>y·׽ kfc@@G^ݻn?m&8=rG6w~z7#rix$86c9Gm{tҷzw)lYt6LPv3AH{f%u[rD{$-;qwخJr)xG `9-^8<SNx%G" -ZblU 5}Q\ݰ/zeu&18gg zPX%֬Ƌ䈕B؋cAJEBO&7IiOpܷ9Js=<7g$7Ut;YڣTBf~IgUhjt"%:eKB46S9 8aCXx1J ?AH=ꫯd_ve\1m'x\ףT[^z)seFرcgEGo]q#^-Dؽ؎}2&"FKW~F97ʉ{ءcCۧ~=60k{q;$,{"JlNiW]i-ASwZtP-*88bۚ]VaZԿRH|\)-S| `Ӧ=\]|%n޽ؽ{7J ֞uTPS)Bo]y#O~ᯂq!A#N'KyUh 5(9C wkR3/(w(Չ=?6Ry?VTJ:v>}9I'Sl X0 *UHө(khpB6un@5O~B '?)SV'3c8n>\N Yr%fRX$::묒RxF0Ukp q`;ٷ=wb3ABh抆8e5nZ|5_X6V oQܿ?XGlf:1!B>?w_K/X)3o#7}ݎ·pj =bDʲ:_.bƣDP!J80[}9*3YQ\rɥWո~;Md ^F˜Q'Q[[ٳO` {9$PK |x~k1/2K %yaټ)X'Âf2<㿮RBL+ 翋}3 <}6FshXzp<JtN#N4*w:QQ%FNEEhn{/1C&0!b}hٕ3Je7}kl"e|Sd4RF\r%rF+׹۳g`0WF644>FzUK 677\hEs東 yp(^ރ];XgRvJL{rbtLG@ ,@=7,+9RtR(T?Aa7{*?~0SO(eT^KXO~}3}5׭;@0G?cL4.O?0/o_vxކ|f$bCD\> J}'Kݕ+W 7;"O BX':(%aڝCr@MFYĨD$Hi`H@#F]l 51P⹚uu5%0G+v?{#+9ws:xyݼ_S|w)ͼSqV5caE@(E1cNϑ!؄ EDbPG{Gjߜ})&2y(ͫ#GC+ o~yL!D7;qwUW]5filOO️K"\|!5IɹK9/92>Y Kt!HՍKu{Ӗ p%:[2SNCԞ̉ܳ]NO)r٫ YGt7j-x3zuUx3qx%,o"3$R)]N ٪SE0oqy}h[VM´*KE)&̥^|_͋hC!==(~3,=Di?NB!WbBD?O7۷O бu뭷VeE!,>͇nQXa6K,Nuw~q%8Vn秕t`&z߱h'9 &$!{AUEGpɔ5#JPSf8TT4s/ٱn7lI#EvZr)ߑ=DWUG?4%{< |zI>6`_"oϹ7De}\{Nb4v<;w|'c Neҙoy{&HLW\Gݏ3nP<';D(mHs3%:MwhaٝN#Y EyA=ЇRf<{_Wؿ>O*O=~46OKgi /{;| 4F3b+YD"QRq9l E(*9Zp.#<4glLų>Ν+a7B*ovNi$Ai3jXC=u]b$O}CQ<(kugg>01W*&gҜ9C}PXөHhv#}CϾjmnNO_vǫ27p,Y:qh?qNIaø{ٶmd?&No}LX~駧kll?BL` |D*Sj:w4#Bɩ (Rjk^C|n ㍡^rwm`-0g0& 8 se/gwA1#QSQ,Wgw>I:i׆f&w׽P@Ӆ^O~SRnIg7n;uhJ13H$%g2hyUχTrgӟ4馛P3G~ߩlpu06;a=rJshdHtFd,EEò ID*ki?|ww9 |FSs+-[>b*?gѢE|"Bׯm}yo7 HP'|š׊W-[)8umϪ南@cB{^D(N"N3ˡ(SQx;wV;TH%~CWelii[VwoxKh6+W1ߥCCCy1,ގD x3g/yU#lSO=5fxPe__߸;ͭ9?0L|IY6;}}xw=\@nL;gшE8"߼j_7/NQ&Ckx$<&2iFQI9gb?XuLTT,w(oL_%b;D´T~ad~|ٱcv9톻^RO/Kdy饗Ƽ ozӛ,ս/wɱIX\pk_o6<6 1WFCc׾[w f0م}%(P럍k|iQL_(/y]PdQ$ID3 v?Y|7a9AD2esc{^61Ù7oꪫFLG5Mկi;c+v;E^O'BYP_'3%:ݎqGaQcu ,I@}3AtR)y*ncOX"6Yl/3r4ǂOrSOc2,[LGsɁg>#{1^?Ec8W.bƎB@!0gy?V40f׬Bt[f&sAm6qUZ++pGu#(ө(~s&v<ɦbIYP Z]xmmC(<^DIhH:OUL =xl1 LIڵ,_©6VkVBf~i[~㍯ΰ%޾%Oɔ)NpS%O Jl 7۶\t]6n%{2;9S=W^)JtMVZ|0bΜ6O}Q@dXd)_wu)2Ł;$Ŗ1g8bi|D-t_P:W~@fle\IWybEv558tSTz9eBxٮMGfXQ u ė6^W1@%,DD84yQ2I$˙S 3%:I39'򥅦蔺pʆk^ pmd^AF#AiKKLͽbnFqƙs,~1(Y&Zzs\C&9y6tN\I^>e;.).K.<\%w^zm w.۲t%WRc_P+1A]Q*эL7.{}xt;o$2ע- ˛/᫚.G" O"k@mw[0C($Ԩ\'zu ;CPSQ:3o2Bl+yt %Rxa5ep$HTtm\\qoC=y/^~O<8IJ={A!@r*N?4~5+dv-mo|xws!#Ai/_3Vqc{)cS/-0}ݶXrvm~t=9⺏o}ώ+fێpu ͑kM6u箞 K̂#T2K"%7cn)Y.ro[d5N cSV ~=*䂓:uԨ (vi@U={u}@x|Qe !_m8T!TfKX(D'N8AQҟBPYֆH$"O@ipZ.q޽pqZFFbI\>w<_42])2-3"HBD"~G“U#FqY%$HHih`Ns\OO٢xΦS.Yse3Ғɶ<, L%^6INi*Ļϧ П]a1^P>})O0|`2H\I]%אO\aRyl@$? nokV!\+l~xolT1%D,ntGA\ma[PNw&(60-%:rb9sr-i֬YzZ4Ԗ-d#ŒۻI]*匦!q :hp` 2>>ZyKFk#(tG$|b94q?:OHl E;t;u}5Wd9b)=fzI{}2G M'ro1#6v,dUq_qn)x?B>:S3'/K.^7s9Nj81:!]qb8Jq3;JKn)e2gϡT78/ 0OuKCCh> 1W2/$8k-]Xx))D"ԎM$~cEPT=jZQȲDHeX>2[J S]BQd22YttDe8nvDM&>:a?~b y]=fK)p9-&#R|Gp:#_./-'4(:x耎_ 'c9yCI}x;_7̓f _?;`BO?BG|Tjl9:- oFѽq-2ԗ8]N(笶[K,6Q!k$:?UNFʘRIUj JtT%v"0p8o'rh"a7*UL9[:kڹ)pF~;o gb󸅝p5K[:{ꈅ&p$_`!l rV8'IEpg喘J(hAC96)1֖]z5tzwҭ!'/̞:>5-qu!G `K,p>9Qg$r:IcVGJWt81h=h:Z~ܷ`Nٷ9SLv?:1iJs& 5 b*nQSQvAoF)al@u}|BɔQ9%:Eq9se Od.;;`l :~Rw7Kk1NW zϘc>KJoy( N&_pFPY\n׳Fcp9vz S'ClswQs¡E7Z٦޵EC(p((ˀ~*I/MGl!Ԟ&`*}k!V #N'm$kڡTb^$8 UZ*LhD qv9,,.VQ,vAq4RP~OapuzeS7O)Ӻ.egzD24ؗ7qdpHvT#CniEMFI&43P;ΊaP?2XRNEAKFe@;t7S\IQ)vS:i] in\>kWĹ+b# 9'eYmPQ 1I“V# gN:+y^ _ I\y_gN%sbܙ'*G8 E[4SjqKk W:RB@.[~ve"i@:jV"nKUY7͂'6Oā7jԎ,pÃLCeť%\-b?[ńƢخ"7!G/!DUo&g+Epf8/֋֍Dhbƾ`>&J/Uw%H{*GňuǏ 'ޱdٻ) *vl5'~0pҭ+#2Szd_gup;pw@q2=xglUUBP"{ &THpWpNkNFr:D|U(Jt*>]{~1ז ߏ"/nBt:-Kv Y)MLDlidAI!_Ѳ 4R,=ӖTHhO\ L›IiD {~:=uә G yE$K=pRڭ%BXr|zZVڱ-[q 8MlџW"C/[;@glniu™LNA}y!> iVL;{H݈iF.=;N8.nK}Jt*&׫$,WpI᫏c\rOzrjٛEybJGe/!_a讳P$l V"_oM9kD2-{?i:Cz<齡Y,,TiӴHvd)U7%3yXڎ-?(=kV~*I %P}{GխS?W1efŴÐ|ȴv! 2j*M o( 2?% 0C?/ܗbf/8=`f72RTֈC:!9:)3y<ˏ8%&u[ԣ!Bge >ӏX߇DzZ]ĺ ;42#N Sr[I“Rcj,8dp Hiߗ_fXOdY N*M$LtNPJl7BQ(ѩVVNyJȧ6.THMlSG-v- SiDa>3MJM9G5Sv|JI!C$ ,,Ҥi/3~رPњtfcA G@q@AoD? #ݛ7~ph wb \NwZ n 'P+Ex茛7+hn G| tlWcXpV4]`@ʎ)+I %JW_^0)Y(ѩ6bG[f[jƺ]`̪ w q{%{iA ~(F` x:LS(SNp] *GNŴho)y.v5FQI v*F$tB dʖcQq?{ UÇ\٭RZtTיRq暔N-->!!8'RJ Z,(a8,QzrK8w`Ճéz|b9vV| ^_VYM|F@ߴ~dإ&RN9 ɵ yX|MWq2? q~*& <+g`$H$Mk**L%V9Jt*i4FTh %RJP-6ɱL*#e(9/6w?>5;Tk0ّd4'RQckHk9ҦRA)! i$ I 7u`=N0?̩"H")~ MOxP_yDKj57aXb Zl6<ԂeXrZ\!3~rBIW]Gk|}P 7=y|^?݈a]V,}ˊ2D"sap9,l290lJ5`OYr0L奦neV;.cSl'n9>d[+{~/KI_Ek!; ?&mP̀,S 8T :SP\אRtI 4]p!Ng"eL$Lyx" C|^d3~tl;;ܙ Gqҁ5n˲Z.mI%O*M1Lk9<wnOi/k"f/IM β\I3MV1Jt*]z.䗣{Jʴm( dI7" qx#}!Ċ6Ņ517 >'>q⾀!eNrʏCH~r!a htuCx|c&/ =-KyS==˰[Kc O!!!D"A  D'txsC ORiܛM;Ԧ-D^ Ԍ7FE )U$TPqP Ս)cHN1FE )<+B4r/^,<ε8+C8%2ArGi,9'Vnh,s4"њJ z¾D!l)hj:?F6xabfIbgmq:!;n' 8_N/#iґ#d '԰z q!cDZ` *g^|"]lN'(vʡXnr=xGIACnL@!e'-{fԝބbMu/i JnTLbWkd1**PhfCBD/躝=n"4 ゚Wi ƺꨤ4-(DO:erF(:%\,kΆ)1fyl`q{,04HgR}'t6WGѨDŽ ˒:!2ȤuA%ʌuZq:I"It)+7d4S/+V:Qp!?-H'G3e2)eь.d^(L!8Y;MJ^WW~PLhjW@gz)#g'EA%V7Jt*w9]h<6Rg`Rsf%:c@IT${`'0"sjv 'ܽ LN"U\!WtR)i(`;"ħkRki$9BpR)0 DҔŒrI.7x~6AQ!5 ID.$^[F$W&5Sij p P'eie[sD's(7pReG =)kbG'1^`,N}{[Ń!U%g) isGxX#9&g.nPcR<yȏ ~-cz\ÜƤ9(C^&.0SF N"OCQ4B>+*Y(ѩ(9۷wV˙Y( (\"+DM_N[83Nc8@qnxp )8²ƂԄè IH~]SܐGHPHAc Rc H*׏mv9XLQSJR&^*X L^[#iPIRu⥀6(i8uWuB8'A>pi2W==fE.)9G[mCoK=lVAY-RN V%GeiyeT:U>~?m'qYmG)Oo=cGS (K!:&OصxeQ|$e_-&tΝTd[u=gx5Vc5)5;)臭[럅+~M$,g笚e~sQYT&IIU >iUPNEITC/HP[6e_Ƨ47frEz#9Pg@8N#9| GpvK! N'Vw$BsHb+08 ,3sZ[/a}"~Bp ujX2$ηF֋` qp[N+K)4(sšLG0zŞ38C OgXĺ!7ݒj,dI' nۍ绛p0QX+>3-pJޤ<@SX0lME\rq<[K2j0Ssdw￳r~Ge-a-^~ZTJH$ԎRġ45JQSQ2崓7a8M/j|́'Jrz;R6~f 8$X#E " "E[$"Aᣱ $zN$F?p>GHkKqJwB6t#%pӊ~ǶfX4OP]+t\Nw؎Q Jٷ)gpɴ;%̚MȔҹ l[EO!)!#^5@ 7b`ͪID*XBG0Gҗcl\64 Ti'W:7؁~W:%%D';)kjR:r:%:%'U4b8TSْ5[r(6x8 X_u47X z'K`ò)5ILI7ҹL#2Y!tA#CO:qò(z:(\"*(=)eoHiJ}lڰ.Bz7&szigPaF:ݞO8 5aW >l+,Tz;]5H*Ԥ`x{[Z t4cƣR>rKx1/lܦWEIPcS%:%u9s$xJ쁶/54>67YxNg.{BT$Ў>!6A`PQ/)&7ԥ@N9ƴ,A2'"גjhQ& S[z(Nܣ^Bx66!5Րɵ 0%4do%^xr8 k,{2#[t;SxÂfGiq60>vRmy\>r՟=_˜ʙ@ʎch7~؉讓~OJΚ} f_c*8<"֠Z$&*rjLJ)w&Dg%ai;|ޏGn'Us7prr>hm a}} pKqtBkhdM)b ѝs.wV/ 1 hv)YtFвxyjݡAf: $`$ ;TtJ'>%I>9 lmD[No1qAS e㙾l(nRɾsN*ZWF,F ,"T) k6wC;dik64Ah@I(EPcE cI$m^xr)%:E\N4C\,θ#b%EtvI%Ff"x3jF` xr$r(sHʱ+l9% \=;D\:vJ\g2.C A`Y' w8 N`:#8N-rg}zVOe 1|e[hyk= MDT 7ɖ^R,rQ=68HԵl^ 7Mutzk7 S:ϿB ^-&՘ƦT'Jt*Όs9N~*zmV㴧#p}Q,’M8WrҠ_,9R>_Gx8uWDj\ɮS([cH0+-Ǚm)ܴ"nrl<8z}S/b;.).>Mׁ=)5(N{Bp;)596 5.MݒrׂHa6bB%tEwl {5KpmOo* Y&:Ny+hr d70șYL2=,#u${3O-sC,苦O$4M>#J}DNz2wDu,-)3>}gt7 zM;_z7FL%4f7fcKcr:Fڑ))*QSQTf˙&ӴlYU8bRKbKS}ǾgѰ,Sꡤڕ AIN/g@N*ߔeQ%>w'º̝1Y /xN-g@*E>9]#:ÙD"L&N-N.-נP j#"C/k>v~ݲ5T 3L1-MP{*)DDւz,,Ř <ر pl֖iN lN/w)N2dMw^iTyɺm>^gGynL1>Nr7ˁ/B <'cfsn}ܻ_77ži q1Gd0ف>J̯; CU&8 rNSvUb[e(ѩ(NxD)E;B;f/-I}IL:'/;y8+ 'vLJvHqP]>~9z_/iWYmNꀗOˎnK_#(* F@HuVjN(̬SbpЧުL9#zzll>m0O"ִ,3 ֽlQ!(2Z )TV,$pYhDJX<)+r? 9KaFϛ'ZJh]prJni{Q/%RiMQ, Eepnĉ)Z}RtRo/\zRp;Nqi_s,i<q4v՞J6mzpDڑXx ^oㇰ/MUMWڪLlW.ԣfuVTrvVAO_&wiW%v'.W%95YޯhXlJ2 JA8,ߤ2No$,y0U.7N +K>Fzxx؁uZf\.nxD 3QSfk˲Sͮɮ%v2Ew/sKn_ǙMC(4ٗx=Z #zIN:4R%3CeASp!5^0ᥱy t>Ϯ,LK9m6U^8u֫ Nz [1 mZt1 7Rp*szP:(&r9Fv#(rxnZ4N f I#gdY*sY?ny~PIDktZ:IS@x:6[Xz 8XFfHR4:ĺܑ1N^9t B}BnkL\>{VɆL a{r.Q'4mI}$r2'jbIȁfn4C诅8q}=ORն5(']cWcЮ|rڋ7rLdžv-Skpڬ2'0U4rN\ UjX1i3)^"NC J{mw.厪xdZR9e9C^fN+KJ78 )@D&y :#:2}^/g)^AOt#9.^ewe{$0'k;\'$eioẅ́-wEyv~B1~c9Q/kđ`- s wC3e{I8n_g :xwEf Q#g$N?7DJa㖸$HP9'l``-GH VOXn/,Y;)<Դs>_R+Osד6RБ2s!!NphLS,9( 5~t$,4Jm6Ϊ,p jq];Rqf-Z] ylEWlZ/$_|%Bz{ǣng7!?-\<(2'\CTP;IrJ @qG4PQq$T*'~[nnͭvX+]25#Fp)0 tt8n&E)q-=%]mz9t(8=A$DcL:zM^'?Ԙ^uĘ06p1ݞVgqǾlA?Iu/ٌR=^+a힘{ _\.ִ\M~5xc#5nrHXQp3 nG״dzZ Ni} .]x6Zϴfƒ@̙m![]SӋ B*&؍SB@ &5!\V.񒊼d6/=lyMRwC`'%6Wot!`shghs Y>Js ɽw!ALYmi[+NpU\{s2AZ͐>)N>Ås;a&\<_S% atMhq-7`4)b1h'Z^y@5uQ|#DCVpwb3e[n'َmS&=:3pp^:;ːٍ?O5 AD#[;>'OX:cIfº3PؘR ^+u~- ؆^(sz2T̮7*s☶)κHP%U^"0Y|$nK;qKN7U!"b"qD}|#_\R[Jm>;ьIΨ$ՒkGFR@g4.g'6U͗B+10pp4\,xD V7pZ pO0 *Uگ-(IᎻ99Οesu' Oa崔^6MwL#@u]nr 笟N~c(/- GvՒ$e87dh?/ێ1ńS#FnskN$2_=ql /n[uϐMqP19M@1@TľCsr,xx]8ʜR:I$WP/~dJgrY$IaB{;:`EbJD}!Gnd.],XQ18ȹ{'4ʍO*6vؒC|iSs골AxlGK'*;32we)1w'Bl-5 5nC%CsNG|:)V*Tʠ'8볤ipJvYcs#z7p[Ne;ws!Sy?}%}ήGZ>`逜R@3, \B<9үg,#UbDbB.PH e@Qv8)3}*LJb\GݢFn7j~4\gR6}P pVt]N Cp7tvZ9ߖ`w&`h 'a ?rKZa΍igFg"!8}%c)GjN>OF Y%s~M*#'H>,& {<' 4myǹsނm1o^M  ͋f׬n|UrC`nٌ; ٽyRGֵ^W6_:/g^f6=P ʽ"NbB؉[PҾF,'R}EYҎD;/'rm-=W)4 ד @ 8'+"sG*QMNS+i?'wKW-tzrjl(3-@hFOwn'o}H;7 V7L˩7i sNq1N'vukN_'k:V֛o7CHH9J r!]zSRhO o~OG^7_?ǽ{vBSu9h҆ jN}Nq Yl:ۗԝ}!>3\pfO"iơ(+A:U^[E(ѩ r(8ztvQɽU(U_8.-Em}TL2?Si%w6􄨮C4!xRZr8In:B%#_qzJ9v3.瓇G0Vݘz9AIvgC=karw]>}b".NqÐB6+ 9.jen-:SB k>]f'rnxnXRux(cY B]dQ;}_y,+φF;|z.TZZoS >t4#`뾭3cSr讞Gާݍdwޏ^V~yZNMP\r!⸬*"Tͮ7BI) )N%;jQMnnO'ͩx樗zH)ӢR,>',HLǑzz'2DNX=' :1W'# 49F 9wPuBg hek` v8}yLfN.Oov27V 7;h" V>ZGg 'םE^b;fMUX=v.[BK~;O9sތW:]c>>͈+/KceRxq>t7~G;^a#'%C^s|v'Tq5"<᪼PS7#PB%b#a_~V 2ve,ca;*I8X~7&+4ɜ4[r!θCH3ּ^NSI;Θ]&t$4ݰi"Gp.^@):bu%s9;} Ou^"xH]˩_fkgwj^(?|d>'YIct-){@]Ēq <{έHO> l4yzΊ,QtФRARh"v9LIDnvP_Og7HH,+ Y:ҙ{6\B#Tz Š*XhN&Z@7&*әU~!q*kuAu!-fZK"I[榐Js]w H$ɱ/v /m˰W"P^8{s ]GsH"O^@Bg"E1.k>w&zzǾxqӜ~N<0+ֶCIN3?9Sr3 y|?+0Q2vːadbkl_ n iDŽxzHNfO S0Sp\T*uDfJLSp"iqqn%L<~Mf]%8Ө)PUکUnX7TB0E3O&~^ O,4ddr≍A\S̔.!Cn;{^̨3S5B [_h T^+{;-Wut瑡4⇾۞xϫ}M)4z$8k#AYNLBXRW-kᡐ+8G ɝe{g<+NIѲ(k}vz][¡#ԸZ gBs anRIpS PmRT4jڕ_ŻJ`5%;G]J?ҩۊ !ŒѻS}Y}jDJ}{GխPT<*D1.4&E|C1)SDWaj=o3dzS T>+i^OgMH ʹ\bRsP؍t4nM@n #HmXyr!½{5#ɰD;fx~   B:QWfwĘ;RfrǦL0KMYBlڎל23awV6c(\q¿tGr9鵲uy 굼~٧Ah<ۇ>(NݻTӥg v'jANŸdr( /TT*Fdie%]8GrN'7v{<-WX[:oTϗjTS晟N>e2=%긜u;iF<I6`焰$k.gm$$OsmMH:tvy6+ $w79j8:`˞xD4DL\m)Bo*xze'c^c.1?ymF *#&YZFk޼N ^vdFcp^7e9HuD@KcpnY/)TA9A|O*A*Etf< rzo<願"wک9S$SL]IPm6q)^' oh^Y9S4GN)AcȂ{VIpO*//¿"q;zX5>p8)NaykJ >?KL)1fjfPNADYzn/UssPYd-v3FeyB#QIqTj2L9;:,sPfJ"`D䈏۰AFU0џ8^ʸ˥?-{UTo ,*ANŘ;q9WcR jm,Wd;B-3nr/bfڙ3GsY5|H[rkz]e$e7֞$LӛI%ٮcÑPAs$=NB< p* \9R'HIl>:?kK 4Gޟ/wħW*?tw8rg1|MZ|qp{oox9s[d Zb_#LH*rYPw&n\9>C'sDTxPea6MEţDbL8nbZ%RCD/+ܯTBSS_)v ! cs;"RI)jJg#:Uw6# ]8pEr:E}엒G Z&#;`$`BRdR-rFe |R:zZ5ܴ:wَ &˩Z90-?oˡXft1vu:h]@N3>їFNm)RxZ}8.S^ Wa*O} hv3d;UN;٣ƒAt*FPL1/TPBSH;Z6ϔn&sw=a*8&Cg8bK%IXR:R$-=Ω|N?g&7/a9ve>NAtil8T^+]G#<)6Is~ƹO-)m0-7L()SkK7[ڙ49xv"c 9b5ic]YЁM⵫/?[T83M~g\B?so(\ CU=UQqX;P`N) 28W1$4e߲΁fΗ7Ss)Y֩Iv9;MӖbz*7}~)i/eZ-Hs9CnY-Hp%}>6ҫ$9Kx {#K!Oa(/ 4gNƜ1-t`oz:5^PztjXZneD2w_ƪk~Q9x/1Y"p/W/5\o ժʃ\tV Jt*Fq%:qd3%JuF81ǹ7D^e(sj,v86ХdYeY H; $[C,eOcXbt! pr-I@Rz "Qp( l>~RщN]}ćWZ_ zГOY،*)+zS2BEAY ㎤ C(p, }${2mFp"2ީV&]-nj_72[vF+̇ 潕S5-/B^9^5rLjANň>K5L*@LȚ"o6'iεzMz^T(%Ye^Pv&g)mbV%no!,cYd^ϔQO`2e"!^w^I٢gQĪ`6ATRK=,.\\r^]:R|ɲ.ow0Y-}N˳-x=̆bq I?OsKlWK Br<ɖrq5w66مoSr;u]> kܲ_yspQQ+/ŻN2 ytT39+qlT*A )FD7)hv'禯T;N4ECgfu.ݦ=rNgPXr{'-*Pqz 59K/ o셖-Z }ÄSJ-ݳ! w OYh,M3@aA<rkZ唫E S{>Gx>.e_W'HHZ <:gϟFsIh <⠀# 5 (َ؜kfR)&#e[g\)b< 'T 3Μ:̯;xN;1DA!J_ .Y~~j _rڼ&UYBQ(ѩ8 ܠ2[YM*Ѷ8Jqww1 '2;{h: HwZ}!tK(Xf-Otz$-8;o῞F,`CBpRuJI& l[Nݙ>~ TSk05R/sB{uGaf{ǝK 9JZBr; x.vx7W*\μ&XzkeO󆩢mոv3n3GmT7*YW5_@HCɓi k(iGNIs* &vvK -ȳOEQ@Ύ;.nɩُX6{{\-QSiqn>sB,ٷHBDLnn/ɕҢoG $0i< :B[Jʇmw LB)91ݖ1 |{m L,k};Ǜ2m5TIJV t{oQ2ݝ,lKIuv$h]լ+?/NgErPn:7DigD(䑽v]C9BŃ,MɴZ ?U#0gXwK)x70*sr:)V7é9"y32E˨e!J6VF3 :.4x>eR<ǩ-Ų%C O'h6tә>lwg&* NX&86,||Xit39&gRޱOhh:wm8͛Lq&$rJ~8=]g!'Xx1_xמyr b'6L39ΨÐaBT^+Kk g)sM]etv.gR[n |Mm}d5-ȡ6[gcپlNdp;R{ievF$mS jޔm{kbJ1MV)9GtstMwʛABy:}MrƏ`_3Bnb# qsɤ :sāF^gU9m %TYBQ(ѩHTv0M)"vțr~gQȄ9d#FJ9ɩ+8)eoieͅKa"m"IG%ȕYrҘIymtY--:}Zr 7)BtF4qHh.=Ԯ+G$):"D98gNtκH[QZ7^.YbY'&@'ǕDe\ݸI7VSƚ]<<,M;7!fD!)bIzurdr0ϩ/@ƶ8s-& ΄9(λ=^!BY,Շً8 {ehBߌ`+o -@(G Rbqg(B(;TQ9+9zɭ7TTcy鵎pQK.)CA kli]񳞸oR`iq"8n:XXGºb95WR BL)+vvBvfg@.+fchScp{PYzMcdH iQC)*B(KT"):6EW($M"uZ…d#^ed%24Sڙ< !sis5'c&M ӄ|Y.Dϩ؆z=Ir&gĦf).XLN#gOz=޺Q~k7d:Y ̍.^F8rvqÞjq8>2$)La("v|m9KRy- ^ԴL)-׿gt Pe EDB֪YHH,Ltt(Lȍ"G| PC繗MBt:s39!}.ue!~ƣx'1 5,fNc;lXNPP8H>|Π/י3k4S&:pF8DD^6 ߿uUbKxb[[Zpy?f )g4x"%ħ3%u; uHl~~_pkdyPdSӵ%^ﬢlM9] c UV[pڧTHTimCcTHH*ϒvI`}C9dOzv aG֘B񐠑"h:cNl{:M[:qtMg,MAw}`s&ۂZ~ Df$=$e/OO2m#ʤjN+!'{˖X8cv)YugzL^9wC4Y5n^ $)IY+ `ơv:Nb@E)5NU9II~#;L;{x~uѴ VuranBsebnzlq_WRi?':PyknsQJ['"oѱ^l9Vu:\FZΠnZ"lj?׫MdmUg;Gtʔr4&=ZOkd^:mN^ jмƨ궨;XG;ES /߲gԫ~/F|8d q0Uj/\V}rĆ EDꌌ9N*; zSW?sRnNqT|Zk?~:Q? 8ĝ+[+<>KlZLVW^LmhܮqkS*|nPW#oB??1m4̥hnp4yn} UHo$dNV(/p{nC8tBZ Q$Paӝ8\V@T?yݥ[BU)bN(Oo8%%IRueVSu89L$vЙLNcy:ܽB'q4R\N}pʙN%XFa107Qݜ8*BgZ4_Uo}gksݩ%>-<\Aې\ $':YLw$YNqOWAp oK*jEܔ 7?}5$~_Bs35)U.NSojCZKM"܉T'^2to7o -gL~9"B*-jM*9]i8@}7-"i E ̕^ ȷ]Ų[k;9 Z"0:MLV_=K9hz{V[w Up5 x"A<5lϡuBEkmlĺxM{]0?%?S+tg:q\EmD[ާ+Y:qo>I?_OSLZ*pLUtՅmRࠢ6N[,Ϝ([«ʙmE\};y+jeYz+A8ڤj ΖUN~BV~t>UU0ȠXOo8[Y*o:V[ٝt'az 1@/U55w-.eVv:T& 85MBkmu;~CecOΞ#)QZS/;ъ-ʗz}SrfZjk]jvN$[r*݊W,]EGm⅞ԅVKgVj'FM:!4c! k }nhl/,kWyB+=S-=(YYETpmTxl֩p鵖yr*QSO.$޶Ki] aO0my">rTp=evzΐ|7I,`oSz܊ 0A"DHOY{_/m9Ns,(`@WuK lA2juU#iES 'BmBWXueQftւ4]'?*p oPm\KΨ 3|V[CwXY^P<㱬_@Bצ PwBБt8lzwn5~lơOW4ɗ$t=^sz~diRnͫ pZn H L;-,:rXq+N2&}n_tCwJZaBgvGBvf!wgMia1^Ưk1k1zb߀hR #lN +܋>([Ō}i[M!8`pP S! hQlr#AMIh})% x>zڶmI2dtaBm~ VW?`ACq=p (۩n9nE.QJT64@k|}Sr}Ζ)Z 8xj̩?j鵬-h HSHhrC)ӕqeMr:jC_ խy.㮭Τ3[Uhd:ۅAՠ?w5'᰿^K~sN."LRǨn[Ԭړt u7ȧh"!a1hDV)CʢRovbz⋖n //2e I'3#Q/rWc^f>~ :C%]Wv/l|cnXe<"-uSC}D1Fº9ZWCP r2 Uj8<1b# BGBx4!^VNS@z3IʒrPoh  AjS<qU<+Ǔc #x hsoL!K=փX,j 9-3egE[}P6 5cY2ݗ<@D;**i:I'I׫cƒUVg __kK,zxkEXǯ# )UI鰪zLs= I=unR ˗5.@(Oity+%vECM*sli:{xܑVeTaT:ɢ^M9XaC.ݵV[ -xZ}Zy*+i?]lAgZpS}DWym}ۺ&nb?Ifᾩ<:?!:%L:{V{^.]H/n3ڢ4/x1OL>B3={p@g "uaj@nAT;5x 1ɋ9a'v94}P]Ϟ?8Ju}XID!tV яak 哼)KUNwlOng[ IҲhw""xr<&wЅ T0QUጆNqJ 6)Wg@OJB3g%p笷ttp:UϠaӲH&Lѝ CwM7LJ2R~~kV:Ul5b @u.57SKȖ:h uҩfȩtr : FpRM!"֨xz>׫i#>"!J?dIXR`$1#~MZ17,UЕE<\hwwZJSaA<}=)/%X̚xrĤZ(Ef_z!t֘OW'"l> %B vv<1U{Aꏪ4 i@ʨC6|%jP'\TAFizZ&V9ސgoHoL'|ҬqlS:Fm<8EG9U^*B*jNlEMu C?' 9©o~z^Ǥ.;Z]}k1RR.Ǥ5*sj媹a:4.Y[W?ޫX,K-uwAU w~4@U`8ˊ}iQƠUT$ lcQ|D59a,t~`=< g̵\, Zr0dJ=`.|8#ETLٳ5V\7*E2ƆZۥtei΄Zg͠YYn4ʧ9 :83M"M zJky/T.z^z_c8P/^,5:LmE"!0P#^[3 Nu^00*p Vs6uJԚ~^̉:~ԹlNQnșl;3woCbdS}EOA t5p4Pl1XI+pSXsæs]0! _c/Kڦ@TU+1/& B7JxImT<p9EԫJy6z]p d)RT83z7xFΖ5~/p:gor:'-rlQa H2*jL债4cˠ{2h,'C>~RUQߝ2 U16lثyfYC?yz@D[q!Yhn %z3OE{]dH XAF/DgҜ. L$Etf@W<8{[ !Zմ{?MƟƟnj Б:> 9 go/O],j=F#JUC X75C2f*&WECiu@'U/gnyv9n@{"ЕK\U/9\V2Eg"+^M\_>_:!LUL9͈XVJ);yj4/JgRReT8a<,۾}; *Bg sxxSf!Dk8xzЊ+;"Mw}QTEʐ JQJ~U(,D)It n׬W%@PSC;V]LC PA[/俛:Д;Z6'lͲ.K4U.JY>X^[XYH? ÁE{yDqZ+OyJߠD+O8yTnDYeLCGǏSoo/aUcǭniJIGnAAK\lT_c&T.Τq?#vtĩclQ4LUmWU~nQs'1Y#P'& dX8hB<Lo ODAU\k8GkB]6tLU$D(§cw PBUͳtolyff>&Wи]5'MbPP?Lh@MenO0}jSu>i:M'79롵u]OCM }lpÇgd"O#KmFc [i}`? fdmVOjCt&;[`g0Ӛ1Zl |Kgg'}ӟwKB_Νנβ!ͱ:\17"Sy[$sbT;۱  =mHD^IJ6-oQAso5mP߿SԽ=i1?+,}et< ?t%vIn񵛿taW!WztJw%6ם: x& h3oYg坪Wl.["qZWUxHy]^T\9*/ޔ\PE3I y U#~iF7pɀ8T?2rmzsqh@faྏVй BW]:*$ޝ897%9Yu|%͇'Mt<ǧϮkt-3uYiSH,ԱIjRǦȨ(+ra>};m~}׹-μ3<ܩPuxH,OϪ*"X,VE8~W7ogfJ7y5aY=!uة%#98``oEU7cx1ƅQy Te8prv&!t2+*G*K$67DE5< [*5Csl>}4P*Sٜ1Pl.FVp(G-,Ҕe*'|\X|+C4^)!:re d:AE~pjVtra2YS>߫KL#aYNLU,"YP4~ stY{q ɃaA޴Za瘤~ņȦ۠\C}N';:O_^?Z3+ϳA]>ѳKtɏڣrKGL`Ll>ߨx 'LF*CJ t8W$Œ^siIWP QA%%EUTC3LکTʟ \NWi&Rgf֎:F X܂9m~R2*8r  :5WԸ*Ӻn&\NR\4 g˒8m|^/}uqY~x&S/ޱJ _|N[c9MV4gHO 6j_Rg.}EN^4H"8^Ω{cv$.S o̵WPYo]bM ^u9%wNĤUTU-[Ug}Bg@脓2)*5 5ބR/ppԭ;:N0US ӕ-'ptɪYC3~a 6B]wp^p˸?iuP>ÌNC 6pWъ' Nm s\utn?~Yԡ] J(.ߜcy]u9ǀ{xH[ zh9:6QLIuzeUPW[ jM+^!+g,Om%vv#7jyPK5u>hPDfM+Bg@ͼސ _%IZN /ZtU(!jN w;tL߭ po~ 㪴jP/peQ>r*y+y>.y8YދNS;KL-sۥUR ӝ05ǸU'C^(lÃ9)nQv2g[;x/oQ͆TUZX"Ӂ 'Cz pVΚ Q)4@C48/A$ϝh8SM0|zP!ǯpUӧ ǗL6'sՍCm{k6Q6 ;yVW'<$H+!ԛ+>l94hק:muRb˜^?'7[֗C8r:_7(WmKMoZޙ^%iu%Nnu*3)Y Z8z[n(ɴS^,Nī6 U lOٓӃ;zIlE*d^>؟1gŦ=bͼPX*sl "` z*Y mC`Sz,%,!qq-U(1M ~,N&ω[+9qغӫoj:jӾiwQ~rx1= ԊjZ qN< RXwFҀ&8AtZѡ߭lz='y/nJ`zUd*}1ҡ {ܼʵ*=X-BI^,%g rzpgٝ̉v:YxCm\XoI^1vu%;r&YmTX$T: Bg P08xp>>—ld^ rcB&m zN[7Hsz,^Km7aKYhӃʭt[:[LTBM4.ß X;@m9t:kYUrCpyޯ tp)^e"5n5*jdvLt)]]K/ҋ/H 1:zhjjLr yyەJhΝ+W_#G@ˋF~ YZ]Y|rFOŷҥKsՁ}'P?S̙,,X@.r t߯.U:t~\..KD2Ú۱֯[~=YUL㝅JQs6ǫl~x ڷw/O-o 7>>1ȑ#ؽ@/U]߃`>u}^Je˖c;>N|[YP]ǖtR&)|lEݸ_?|:тmtYg >(Q!mƗ+.ЏKx㹝Â60y9;zXƢ߼e~y&@oZLj!%Rk;8a:)P"կ^=4B*pwsp&g1SW9nt~:6ZV kt#O/~s{ĎI6/Uœ̆ 賟\dɐ_~~;s=KoxXd\3g-\.z;%O?4~_o~b_v뭷Gݤ.WV޽BW<soo[V]=,?~>` 0,t7o]ptg[EBLncQ'> G3i˖ ng6]vC=$>ګB*_5VZx oW]u]VR={ַāO?}} WXIcQ!_Elrcԧ&FaSB_x*0XQ_ߠ]v]{ryBu33W#rՋBUc+~B=6d[{`яdǶOKW4{ vûzy1GcysHՕ2_:wEE E0kSjaP"UR08xrVjoxy27Wz-iB(~Jްy6޽ Ÿ:裏o|: h];Ҿ}{iϞSTuuQס/'|B|_e8^z)UMg6$_\պr%[Wbō< W>:xn*l 90mٲ?*m!1aY}`c>n91BH$i!~{us"9׿A_+srkL*_ud_@7R?Xp䪭s8XBю'p j.RF}rժՅLf@?61!o|+:y8 qŵu |8{aC=Cg>VM|Z=Wޮ_hll(8p@?Μߩ*ҿ?_rm8|?=?qW}?_zܮ8TZv?e\[mu[y\U26o,߾h]wuSN>i)pqpꡇի%N9;o~󛢹y|^7s;'Rp7^06;rP+/"^kHUm}ȇ 54^ n4|n[0=f\z(/2u{ Trߧץ>zu0$_F$R'zj<[8hc_8D"/8-oѭJO7o~CPW /=Zl^[L^_zyMUϐ^'|R>PWt ?3ȟBT;[`鵸Ld޴x#a\N4h kΔpJ"Zl-[f;{{-4wg^[E:_̰:A=|vE>;\unVKy\+^w#U89H{yz ORݻwqPo]pM6k9@9LrɫvTLp5O-Nq :R!x2*d)ӟk7jo|CM[O!DFz{BU /R!RJ~۷o3:\p'O܎ k㊹\r>֭['YK?׵p .x]}nU W]u?Ǎ?>㡮xǍES9\+kҖKD_*O[:b}[דqJ}͜:<ˊ ef ѹfM+*UʩgvYCA@=|[E O48p{& y,Jk]*[=|oU+nU6XFկ~U'G.12\F7_!?|摧~;ܖY W;yiqNʮSi9lWvuW^y?/|B`@?9B^~x. /S/w̸~'o7_q¬5OR_s9ȿ_xy\;%\&-[:UƈߤV6ۇӢ?+^:3/k-pvU\ Ayt +Eo:O͡=-Y2ݗ8 3*gAb] Fa%UrP W.Uo:xo}+C/j7WAyzӛLhrZr`~za- pŗAn 2/WMp{Ygjրe`p_q/ T\^Z߾(yx96^dC1_.z;ޡ6K>׿0=*y~NU2sH,Gbܰ v}ֶFXFO eYۖL3!BUau= H`n/!gj;x"i)|X!+ɶ7|.yYʻCp\ͻ袋ވ*t8ٳ'ʱB'@luU |:ۅ:Çq^ê2z\ ǡks\Q/4i3*?2m_)H~_n_Orh"m>wy:*}[FCH|śSh{֭xڲyUO_NnظQg~ u?#T5XfʷP ZV'xYIM-m /tgmJ2H#IYe:Kr;Uhp~Oc;)mV1<09UyM_:n݉ۘpXQ_Bى[ )q%O-ב`!^ :i\,*VZIW):9ȥR/O<񸪢mx$ cW]I\~.;¡xA?&:tzg劕_]~ͩg1 d5b7 +%EK' 7|/kI~2Ke 2`ۥT*fzt-B9鋧C>^Sr-mTz7'? 7pq+Ba@\*+"JU}h3'>繢mc>#/ϯ?ρtBsP:_ʃ+\I(y㝪CrToG+;٩|8]vex4WQ8 i|.\4ExHus8~\]xFc|[Ա׷I_z<Ƒ#ۺuc8%dl:D&/;gGQDfzz'AUAf6F3?TKSdzk;|Ue{įyp )t8 9x |O- }(9xo2?Ô'Nt+ hR~docc4Y|)rpK3Gcdus765XZNʫ{`_WJ,]ĄZ(CBgS'-:9[ a-Ir-~tWgy{1裏+bw;__mXn]ٳ28`5/]wRW+}gy4_[k n29jut4\Wrg)ۼW]Cmmm*ʫ?ٓ4"~A T5QswwJl\TOS;+`B-bBe.*OO8)8x oG>WXr!zJ_ɭ(8Pʩ:Rlٲy?xCtm&J/7S|{u'D{vޥkw&d^ Hjjj[UTj||%'=LZO-֮ *owsDpP/Wu?t4W!| y{E4[tA]OeBCX^ɕ7X[{:^ mKׯ''ϑZ[h4@^͝;AXTƚ">;\l^r~}y`POr&Bv) ')!L0H=8zxM#W 6p3W;'<9_?_l+ lܹ:h{Z͕౪|q ICWMm|g$vl^xeݺu2 F瞝&1dR$r%:ZΒ=]P ۥT'*#Pu]dv'< Q7b:(xC!:x𵒗V<묳TXr(W>׾&٣Ñ7g?)}b)v|'MvDqiB)WA_&A oO\rSSO?M79T{[_o~bӦMv袋O&---kQ۬~ԉСzR)zH W۵}c⎟an\pdin w<Ջ+6L5 gt{BVWT21o_?Xd̓z=r O?:8w[677 oy[~X pnzQ/~M7ܶ=Dd_vq;L<&O|6/5;N^vZ(g_ؚ5أ !tV+Ԃ :t&\t~_|Qs$'~_x3ٜ҅>k$N&Mo0 _EjC?)zgZY$_U;ΒChs hq%_%53ݮarݺuw-xM,?TP៮*;>68=z?V^%u]UC*U\| reZ+[oUYy:#&tK.K/d־\=xxnmNjW\iW/z嗿Qyͯ~uCw7\|TucMUU/cG^}unQ:Ëy[jov'r64!RU JSvG@:gygKc@>Yn4C 4ӑ~+^\c|R~M7aUJUG}ԧ>Eř__-[J,F9`r^!剬c\oַ)Zk֗׿ Ts^թY<o;q\x B*_>9VZOU;v6W'ѲeqqPKE+OO|I^t`A \j__&oqBEkדoHǀI (_F&>ZxOwU}-oy }7Y^wZa}8\qkm~~lZ2#2.^ݻOض9nF}0rة*1?g$tLSZr9T@vTe kB'T n9Ev[!:G$S%ݢɆ>r륗^ƕ|Btw#^WE/&Moz3sF_s;1W_}a_w['*L d2A='\ŗ^9ϙ,za~n]=Jʁ \{%W6ʕ+xؔlllҭT =̾O_NUav^/~ n?o\t> 9?i^Yb_W^uzc͈лn':[݆{'|c?' ȍ+ԟ4CA|!?Y"m:MNKtZ4\[pVv`@F! >l8Lvqb)R];3%__7ǒo/ﯹrJ߫ĭl&~i=$)uqv\y 1 端[h1/ `0ŋO[[1!x2yIEƲ)3! }ԟ*Y?w U'*` nYfz}s%tOB'@!-|bt+x[K '\cח>__o|jo⵪4ZUٕ_|D"~FZG}xʬ͗]!߼U[=<_nO?J-W19njׂϙLz׻\oR\}T%)¥InOI]{8 j!t@ųm$;A˶y '$0n[*^O?]ۤn: 7 #nP3t /"h#$٥Nrth "TlRxPP_<݁mPVzMt\U1CRL B[>og CApNC8[({XYJ P穨r*&P"zKLnɑ] uA?'!۬Ps`(AbAM@bB1&@/D*ds6Zn` '2L 8bҶ`TDI*z=oD?n>aafx_b"uLӺxP3W﷪)9|&~>[)f<9u#B tV1;rÓm'=YG{´Ð^cT`DjBg3f"t $eFvmHe,~CiuX"ۅucZ*5'JUn_GϣRz$*|.MΞp6+&V)K4fY,Ä:N3V s ' Æ`6+&IUjg;S#*xܧA -7lna0$B!lU ɸDL D&k. 'cɂ*5{ i t9o["Q|FyTFWBy0Q^50TQiCTJf4X#aPq> 7m'8BPUP)--\䀙s!`d,i "t8lPY$.̒RR{%ۖds-l0:46'ax$e9+Y*Ū{8T:UDY'KK4`2;>S}7rQ0ԟd9<KT.` #Aߙh{*N5ۖaSnuzhi>* 4р ~U 5!Ի*qx;7PJ[*TfcqmPY%hMG%hikUCcq=@Ev!0Is[<8.&Tu@ʟs>&})T_D+\y,%݊U9JmV2wt Nжo6RT Wsճ* *-UNL`͚֘$6X2G3'UnV'@e0 T:a=~#h'`OR.)vۉ2'Dǒ(P!!?OPdN퓒zzMatK.BxV޺ƀJ'`c@hTYzb&@uB N8A6n"KՁ'PgiAzat50^tBI;:7@՘==IBgUm0tBI+[7RTS-%M龏\}5 ShT=[~ NCUCJSc)5JsK4HJ'>CTcRUOnUUM0w` -@Ierr„ t¨$T=dHX_@l[޻fI+N„ t˜x}: @==A!QYbA ,B50nؿ ?IXa S% 0A,YЄ J'-7TaRUNN(#KJ'L]U@ *jJ?wY>3FT:eٟ_p=0 0a|2jeRCHNдNUռU;}R$<_.!/Y6$D xTUФwL̺9T=j[*kd t¤!x=}cA)Ni8IA(;j(T=jUN8Yp<¤g'UOA0UpSBt߅!VQwfs{,Y2D PV S  o7?eeJiNT=KfrC[-L !8Be4Cz眛/hBL}{$,4mz\tO~vN:ͩ'@ܒ `  Lؐɳ4}}V=l <T tL+>$o*V6Ub,ek S|-ja @-:;HdP0N`Ơjܐa@4KA q8~m0]:aa-gM[s*a,#ވu0e۫@Z[d СChv^~b٢M0eۆ}=Znq = ip*L/23mA-+ف[Q}tq[' `*0 !kS[[w L1 OP1iKk 8 8!dZډL*l}ak(3xR "27H)5$\ږ}ī^me'wYO0{bN(Cx2(•\:$c8d)2 %E#*` St \l°!5B@2KN(78&5*S%ɠ%('y$㊥F[bPwvևsAJq4Lƅ e`8[NS0t 5i ad{Qp{'GnuHi@+Ҋ|.y* @x'+<L#̩ jQS!d?!ꩠz UqWHu&8H& |@ea9@.>sϪg B\PD 5@G)g1*'T <@6+PIxh_XyT<>aJ-T"< *HF eCéLkby Z'02J7 PP('- SoMøZ=o <MT7  P^0`dxp~*~6%b2-@ixb~0!-i3dP$q;9`p+0>xb}? =DydHI-kִO<5P*+/G-驴\ X 0qxA:6!/Qz9@):l?oźM @>Ӹ? 6T@mpa`N 5a`F UL&)'O0n۷w楼(ABPL 'O0i^jq a Ջ$; Cܛދ 0sSa q$r?s mhex")E.]TB 0?L;TAa赚v^Vb*gW[ p^ ک޿UU5w P~;̪CjnŵIF1eۿƭM @YAtд,8)ӟߌ P97!RšК $$[nMʆlYnsܠr2T&2jzqa3faUCETUl%h+Lf6$:G vC n]iKj/je8KW2-k%U@ZsU5tKTEΏ&o0`<"mbi˝vUy^*DKRVOr_ےGm;Aߎxw&x:FQHMayR JRVX8Ҳe+GB8It6/J[RPɞɱ')b*P 2c%,N!5 FV%>:{8Ė,?GB ߈q!H@ ȍj)IENDB`jspecify-1.0.0/docs/static/img/jspecify-landing-community.svg000066400000000000000000006552761464555076100243520ustar00rootroot00000000000000 jspecify-1.0.0/docs/static/img/jspecify-logo.svg000066400000000000000000000041661464555076100216360ustar00rootroot00000000000000 jspecify-1.0.0/gradle.properties000066400000000000000000000007271464555076100167230ustar00rootroot00000000000000group = org.jspecify version = 1.0.0 org.gradle.jvmargs = --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED jspecify-1.0.0/gradle/000077500000000000000000000000001464555076100145775ustar00rootroot00000000000000jspecify-1.0.0/gradle/format.gradle000066400000000000000000000020161464555076100172460ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ spotless { java { target '**/*.java' targetExclude 'gradle/license-header.java' removeUnusedImports() googleJavaFormat() licenseHeaderFile "gradle/license-header.java" formatAnnotations().addTypeAnnotation('NullnessUnspecified') } groovyGradle { target '**/*.gradle' targetExclude 'docs/node_modules' greclipse() indentWithSpaces() } } jspecify-1.0.0/gradle/gradle-daemon-jvm.properties000066400000000000000000000000771464555076100222120ustar00rootroot00000000000000#This file is generated by updateDaemonJvm toolchainVersion=21 jspecify-1.0.0/gradle/integration-test.gradle000066400000000000000000000054201464555076100212600ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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. */ /** * This build configuration generates two integration test tasks: integrationTest and integrationTestOnJava8. * These tasks share the integrationTest sourceSets, which contains test cases implemented with the JUnit Jupiter API. */ sourceSets { // The source set for integration test that depends on the generated multi-release jar file integrationTest { java { srcDirs = ['src/integrationTest/java'] } compileClasspath += tasks.jar.outputs.files // need to depend on not classes dirs but a jar file runtimeClasspath += tasks.jar.outputs.files } } configurations { integrationTestImplementation.extendsFrom implementation integrationTestRuntimeOnly.extendsFrom runtimeOnly } dependencies { integrationTestImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}" integrationTestRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}" integrationTestRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.7.0' errorprone "com.google.errorprone:error_prone_core:${errorproneVersion}" } tasks.named('compileIntegrationTestJava', JavaCompile).configure { // compiled tests will run with both Java 8 and 9+ options.release = 8 } def integrationTestOnJava8 = tasks.register("integrationTestOnJava8", Test) integrationTestOnJava8.configure { group 'Verification' description 'Runs the integration tests with JDK8, to verify the support for Java without jigsaw.' classpath = sourceSets.integrationTest.runtimeClasspath testClassesDirs = sourceSets.integrationTest.output.classesDirs useJUnitPlatform() javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(8) } } def integrationTest = tasks.register("integrationTest", Test) integrationTest.configure { group 'Verification' description 'Runs the integration tests with JDK9+, to verify the support for Java without jigsaw.' classpath = sourceSets.integrationTest.runtimeClasspath testClassesDirs = sourceSets.integrationTest.output.classesDirs useJUnitPlatform() } tasks.named('check').configure { dependsOn integrationTest dependsOn integrationTestOnJava8 } jspecify-1.0.0/gradle/license-header.java000066400000000000000000000011361464555076100203130ustar00rootroot00000000000000/* * Copyright $YEAR The JSpecify Authors. * * 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. */ jspecify-1.0.0/gradle/mrjar.gradle000066400000000000000000000041121464555076100170700ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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. */ /** * This build configuration configures project to necessary files to support JEP 238: Multi-Release JAR Files. * https://openjdk.java.net/jeps/238 * * It puts class files built for Java 9+ into META-INF/versions/9 directory. * It also create a manifest file with Multi-Release attribute. */ sourceSets { // The source set for classes stored in META-INF/versions/9 directory java9 { java { srcDirs = [ 'src/java9/java', /* * We compile the main classes again: If we don't, then this * javac invocation contains only a module-info, so javac fails * because we're creating an empty module. * * But we won't include the main .class files when we place the * output module-info.class under META-INF/versions/9, thanks * to some more configuration below. */ 'src/main/java' ] } } } tasks.named('compileJava9Java', JavaCompile).configure { options.release = 9 } jar { into('META-INF/versions/9') { from(sourceSets.java9.output) { /* * As discussed above, we compiled all the classes again. But all * that we want to include under META-INF/versions/9 is the * module-info. */ include 'module-info.class' } } manifest { attributes 'Multi-Release': true } } jspecify-1.0.0/gradle/publish.gradle000066400000000000000000000062571464555076100174370ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ // run `./gradlew publishToMavenLocal` to install artifact to your Local Maven Repository apply plugin: 'maven-publish' apply plugin: 'signing' apply plugin: 'io.github.gradle-nexus.publish-plugin' publishing { publications { mavenJava(MavenPublication) { pom { groupId = 'org.jspecify' artifactId = 'jspecify' name = 'JSpecify annotations' description = 'An artifact of well-named and well-specified annotations to power static analysis checks' url = 'http://jspecify.org/' from components.java licenses { license { name = 'The Apache License, Version 2.0' url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } scm { connection = 'scm:git:git@github.com:jspecify/jspecify.git' developerConnection = 'scm:git:git@github.com:jspecify/jspecify.git' url = 'https://github.com/jspecify/jspecify/' } developers { // These are here only because Sonatype requires us to list someone. // Any project member is welcome to add themselves if they want to. developer { id = 'kevinb9n' name = 'Kevin Bourrillion' email = 'kevinb9n@gmail.com' } } } } } } nexusPublishing { repositories { // The following line causes the `The Project.getConvention() method has been deprecated.` warning. // The `gradle-nexus` plugin still is on [gradle 8.2.1](https://github.com/gradle-nexus/publish-plugin/blob/c2614e3a5fd61008c66633ca061760df8d4a5106/gradle/wrapper/gradle-wrapper.properties#L4). // I tracked down the deprecation warning to the `sonatype` block, but didn't find a way to avoid the warning. sonatype { // For users registered in Sonatype after 24 Feb 2021 nexusUrl = uri("https://s01.oss.sonatype.org/service/local/") snapshotRepositoryUrl = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") } } } def privateKey = findProperty('privateKey') def pgpPassword = findProperty('pgpPassword') signing { useInMemoryPgpKeys(privateKey, pgpPassword) sign publishing.publications.mavenJava } tasks.withType(Sign).configureEach { onlyIf { privateKey?.trim() && pgpPassword?.trim() } } jspecify-1.0.0/gradle/wrapper/000077500000000000000000000000001464555076100162575ustar00rootroot00000000000000jspecify-1.0.0/gradle/wrapper/gradle-wrapper.jar000066400000000000000000001247601464555076100217030ustar00rootroot00000000000000PK! META-INF/LICENSEUTZ[s6~ϯhfgFI}RcU73>B$(aC,@Z=(Nu=֢swJ|gr]ΩW//e6vn(}g퇡͛0ݛro^X݈wwnas[;|\[7z>!ōuP_ymfD3iDd'8l*QU6VNªޚj,qEổv D[JlbJ ȷfA{[ z{Xiջ ̡SVJPG!ao\Z1 `ӝKj'qKϔ;< i,IJz1^ jxk0`MSiUА]JӶ⠇= ⽱G?@$Fͼʼn+}KAgKB Fy)'Np_7{X!{EӾd9h&rAr%պkʖ( pU.H[ՁJ HL.Ì3qk7;ν&Qy|x [<',6[ )՞FZoUך,hMh*8Xwe3) EgVGghCpJG~_hFeq7¹;3pP~ִr/;:$DEM4c-`bz@/䘐6Ƅ2?"' NPn*-pc2(!iL8R@w1tXHn RhXJJ2B@70-/k2-dqPOagXa E+ 1de#XQ 4Fq^ (Q*VF?DcnE\8u5@ ̴Q+14>O ><0rA%lfJ Xw]}~I|zw$W Zc~^Z UV5Gȃ3n тqV]k"[˒Dh3:}) .Ҩ bL$H2lZN"KQMm7n;h#3ZLjDe}5yu^f^˰H5腭l(uD>[_`FWPhd!R+%u -+Y Tr;*,!%H+ȵrL 6 8n9:cKxi'BTS0!(hFJ&v(rzC(Ȱ#j{K|v':;d)On@dSe ("$}R:ඥ{sF›ѷs *]<~`Vb3rqz,GeURd!38@z5eB5A#L<5e3_V' єga`Xq|t q k}#!ЙK'X}[N#Y>B9'la5sG+X Z!P$PqCt-z>k= l/ѦAP /؁qe f죰MӁʈ]^f+ܺ7;^Ք ҡ审 6IdtA8wڂL-PbYc/0ScN |~ V8 (͈?hz6jE,O_8 vS&ñ?Zb 4e ͨϔh%/*+V|Ѻ Ċ໹X|24[yLvB:p %Ha@ Ċ 3 % sunDC>!R e-Bd6ˆ*bGd&%-5P8"?S8ި*Uch$bpyid03\L&VA<džy⢉RWALN_+P?G24 ˽h•L}A"MMV$T"yu6K VMpd8K&*q4N8{jvMx蠊:rzJ/I.H|x"aV6zvt>x:aͧKki `ZG^2.7T_2LwXFH57B9pR|io`? L=2xhviPCXxte9ٍ_1} ŹYd48Rg#c_A4T=‚'XɥPMӨ XxG MNj!|5PRuKZ| v9$nR-V"5/i V$wI+-j6/'νƹ@lL,7=܋Oz_n:{/??;op:I4JISќT:BKȞC,~y^/W/߮ ݯB }`e|\akansՖo Y{TӭpW8 5H5DB79Dx;S&3{V,?9}r<_b@`a'v6j 7Y@C>2ԮJu]b2ʍ/7zK<"[-9)8 .k4m'ZtWҗ\n=}bW H`xr^h@h8|gUmtɚcĘ;3|bpx ؝1A73e FT-W#c  [ r8HOq^FQ%is0kZ! /H:KO{t=,|-ro OAi9l+Zԑ+1G#ŝj;jIY0OAAW-p_造V2 NotMv9!@`%nQIQ~&=196uMjhWx0\ږ(hŔΣO+fx{d#H6dEcF.PK 'PK! META-INF/MANIFEST.MFUTMLK-. K-*ϳR03-IM+I, dZ)%*%rrPKm>=@?PK!1 org/gradle/cli/CommandLineArgumentException.classUTMOJ1^/sRRa"HSO-xO46.n>oIP,(:}~3xng_F1K26Йl" $D :6R}Ȋ< \\y}ۿ,!"D4,NiSnE|2 ( ncЙgx 2e^ʋ`,'¥StUi4=p*M+tqxgY']hnZaИ0U0JRv @y{Gj PK`zX!pPK!& org/gradle/cli/CommandLineOption.classUTeR]OA= (~ʇZB X2fwK4F_ՈMzw3w=ΙϷ~oyVp-mI3fztx(=Wox/Auf];AhK[ DQkz7uqU'_joAĵ+/]Hn]C|S<`|۰}n90ixw21UQ  |wmRfAbD0ZP:cԫ"$#TۭpõMʔ;,+-yF0zAﵚ23ߓ `K,p9Л˯B&#x+c)d1b$pa#IK$CbmN.HE>\R1xT8Ev WC#h 2:0w5z_Vq Ӹm r. S*BEiQ8=bn#7,ltmۑAwhLlV='Vh1K~(4 d"_i" Ld a%:Uя^ /0c3.Cd(OBgxf~bLƇ?T b_`k+PK×nPK!3 org/gradle/cli/CommandLineParser$AfterOptions.classUTSmOP~.ʺ1@|+6( ILL0ܶw]]n;!?hhGO,=<9O=9:7t=)K"EbtāqA<_0rK/J6 ҩP\EBͬbHC?BOJl<2\HЂ;Ҭ1 >?av ;Y0i `a4 9*nDx-mI áׅyQ喴k JOk/wY覭gzK=/)FPi_z^5bȉmB_t3ҺREZwp7ۘf`0\-kO1 @3qh61$"6%+nK4TudhO{Z5f r03F(G6>wbډQّ1:x_Z5 ʹة+Vq{1挣StiPKd ZPK!< org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.classUTUkOP~ Zx S-8%&UzY4F~hb$^oA-k<{r Q`xS%a U_TSXUؚ0-V/y5S'鉔Z-kjFCϔ5$pm$e52h/³ÙV609\]\3L0t%SuHO; y]OSbqz~VlKha8i{;/$2?͠DaEuWІv삢@n0t86)tP7#&6HĺPL]$t3wg>i2ĢpaS˛z:a |L^eWs p;Cצe gX/V}J&H dG߶:තҵۊCy 3F7 3ۺ!m[Zۢ c&wgٲ3j =me^v}5{s/I%6j\n>ly+2W7`;`oCua ĐLuvh% d#Ò!uD]݈uڶ:W(lMpia-~@~ X% *%aCUr*5oN)2d\#B2Zv=Uevڙ|.CWϠX湦C3 MTj־%nCuaԢ3Ih%R{wʸA(Űa%lԣGn7 fjLiĽxh/cAA6oh#2n Q}+C˕-)y$ u^MB7NSٜ;)TFUGֈqMl}Q|+~*;8!JV!*R%cLbxe'.t_YQLU\0WTs:&BCn?G {<ݍ}"OIfKBw!y+ ?Dpi=5;Ug=Ȑ2ÊƝ{vO\ .+%}XAcĐR*j@h[2D+.#oƵeqS2.t-s 1kfP)r D:]cETJVeg8 T_v,aɰp(8 F̆8ܡEN9$ΏQ1*Bx2fgfƄ%<%iT2 B+vhgls4H!.Ob2.8UőY%4 QFͯzBV]fXZ9E^Pޠ .?1A_ob&8}uxP& .? 0fl+67 do)Q.^Tgp6!qo5BtC,S'1鋴b>8OK]Q= Acm >pQ/9Ջ]=i{OޓIa~}K$6SVMa,OVL`MdkXza!v$z}c-I3Yj70Eo8O:HKp8ҩQhDf%V4&q8Y)"|V{ZƑLp4ӿǣxsq_>)5|bMZ̉xxQ{5F _akI֌̈́q]OtNh$DW]4Rt "ΏN\*ϑ,XYV9ډ]$1(MR=SQ#٩H*c ~PKC'|LPK!= org/gradle/cli/CommandLineParser$OptionAwareParserState.classUTTkOP~!PA72nʸ D_Y{(#BpI4o(%k}罜/c||'\CRm5Eg߲o])p)l=AiSDZ75kV! Fa2{]m״\!嚄Q,³CcCYz0Z$uڲDQSrݶ2E᮱DJ+\zB/9>py 7<uݸ&3PX^pp{r-M:zh‰9  L ?**T1'v53k~p. JbKjCz']DqOQtZWtEJU%_?jVo29iV]-;-Y?'AS7[Y. ݧĐ@2gٝJ)r~+{[__X3t]KO SR]/K)!/g`=5Hx^0hUۦdd剋a*I Sgh LSrlSSx0@sߛy~bs yt*hxQBr+2Yk 8Ə]"5K;^)}<0|.{BJ"̔.E%B!jb E|c{ `  2 "8Ҕx@N\o.rru0h$g:ԎAB5MΧ U2E>~ Nw6if)*cgȺ=ٱ=ѕF*sU93Xs&" QkԀޤ:!#+ߝvR&,-NfjA1-kX699| |x*]=PKu[z?}PK!3 org/gradle/cli/CommandLineParser$OptionString.classUTuR]OA=Ck[ji+J[4D3;Wf}1? D?x-59sϙ{?~wɭnn^(]7+  Ȱ::^o:CC&|67(W5/uPw [76֚-zC~?*K`04mW4,W6㾽CJ{\EB-IqEax5gaHq0v~_)[ ` A39Je|7,joK gQO(ڟg2iwRrRPK CPK!2 org/gradle/cli/CommandLineParser$ParserState.classUTQJ1jW.\q\( BQ]fv$%3-~%ssɹɽo/ kwσTM:n S)oP"OOܠM҉geU1oz5͎HZ] h(EP-V7Vkn]~BCwLGB"6J)\ur:&A ,5rOry5ir rBtA\-@ em\deӶrǯTps> =jV'Z}tZ%9T!u`&N:KԜqn) Iß{g93a'ʭ=nmE mA~)<#A֎܋DQ9k8Du]\Y>o=7fUJก  Q-Ka}s7Cf=KKLF GA]>&|<G\fd`z43>>0c giGBz{p~:qS^5\^2n3kbvܭMӞiZoaw C ~+8fm> 0#&QJFYUc8 pY qݎ]q'"ctВT~ƴd{1ۅ&3(v!5oߕN0N-d0DO\ɝ myܰ!pdsPL%MSMS!O4nSMz ëlq牌*h:l;q.,M@HQҋ>II\\ƍ,%|߸n4E\ XЄO+ YnYr]Wdm6*,\Z梺ʥZSWjFpLm61U*P| ;5C5"O%w!ݟbf$1~9y*aho:d!\_Tu1C}(Fɯ{ce/P.1r:{! oV Ilm^ c $F&,[E )i"|IbPgSMlepNNJ nW0Cag!'*hُ2 EÉ9G0 S⪤L:zv7ʺ+59,}nHeUrjI8RqE^15@4Km'{VI&+ $± !m{(w'A_ 1:й KϕWN|'X,p#]F?")yo?_"[ 8 с `-. X8`9!;~]'8i8Rp&{1Ô~g PKcPK!& org/gradle/cli/ParsedCommandLine.classUTUvUvvXhP@$DJ{"ФE@=Lfvi'3qf%ŵjf\yE"?߷w~ǟLdxWᜪqKχ|8b0Uϰx9nrƵϫcR!^TKqC๹Y=7CX'ϗM`X;U>w\Ed209c0LB਺i$UXT-=E$jTBb35OB1$qWe<ѕD,{;i0Xr-oe'`/\=G]v "eS`%oqG)}exNwqO1 ɐdSI*8݁b8+P2MJ{2" َxe[Q\K`H5tD+"6 ~>٬BUN$: f.D+2Õ 5m 69QĜY̷# SL+$;7t] BcP,_۶a1Ld94o6Mʣ۪"gll:'&ޗ&Fhʙtw>MaO,mRZ*ѣٸфI!-l0==r 6,~ ;Z?%2\ Rv{X&?ǧBF+TDK:_yVEu_4,D(_j%XmPK2w:PK!, org/gradle/cli/ParsedCommandLineOption.classUTmJ@mmmu" Q1 74MN2DA| "(>8)ssoΝ/{Xexy~Ɣޑ /ӉyyLFW$k2k?Q4e!vI|*`߰*;?,4q[!Y"2"%ĨSR2z1M:s*s!a#WI(K ")+4Žkܫ".Up :M ;txwx;)lbI7U1zo#"p]#k+>nַ#b/L!]pλq]k@\Ik9NFX~.bܿ_K%e;+B5zNrYupeVJPK$OPK!A org/gradle/internal/file/locking/ExclusiveFileAccessManager.classUTePMO@}[LBRHi"!TBDUH^O%ukG9rȁUulzf4y3;b]0jJ6 B5BU3md EJ;2$=19>RRS_><Ki+eQ.g=(y&{uqe ~"Zb3msrg1>E)KݳrN!eqdj(ֶ$gLŦPS?^*Sy=o>(EVfV/\FsrA (x. ,llN\^%tl O_*MX8mLt7L n?8KVY kuiV_9@Oyz^@p|ՀbtC~D +_h}aŢ>^3_l|PKywʇPK!> org/gradle/util/internal/WrapperDistributionUrlConverter.classUTQ]o0=f2c᥃CX/CHHCUInSo9N_!=uxEG!u4dY{2|?zH%ކY!$7"W~'dqMxIrK?QWVYm ,u=Mu~XIir5EBiRIaw O` ~^^ I a <TF@(CZq|м(H"w̕l) |Uv)6V)錔Q{X vmM=wom )2g0\(a^0пwB p>%ӷ٠.q&_9u:5%qm\L5W?@כhìm n3A]tiY8́y٪faa0x&X#:\; tN5f~PKbPK!/ org/gradle/wrapper/BootstrapMainStarter$1.classUTmQnA!5@$^p0 !Hqiήfȇ \āLi{z CSpyr.Pv6l*km(&e g)'ٌ (}|<%ERR&'#Ѻota~FɰB[fm!쒝^GQ2~߂Rh6Ы\r[Gu.=\@.{05%l9 6W&Rd'BKa:*u{:hF:R,:(?9cל^+\ ZXYKosr-l3֕%ŽBTRW/;kc OebCS.yMPܶ[+5WPKEҚPK!A org/gradle/wrapper/Download$DefaultDownloadProgressListener.classUTSQoV.isKJ(Tգ, MC)++CJ ԠH؍}uN썇=3Z*&6iO50:ls{s_/^8ݻVc)|\29kZAzPC=)n`5G Fw}7X#RºQdth30a1n@'00C Y [#Q.whfHWV 냗HwcΣDV+ cVq7)y5`܋j 1Uyt|"Y,MGE|*T~OjF6-QKp9A'de%"GPj;ZGnW|}=u/4|0l%)^rV"*$ t80qrmuO:{` :]onK*Fʤ0$&oL hEݧT~^UƋmLmLmcY" O ~{~~0͟Rvab&{:CT7M?AM?M33_Qʦwp&>ȵ_,>ǹW1Ț~p17 Ϩ)@=]ZbU2=J39J A>4RPK%)PK!4 org/gradle/wrapper/Download$ProxyAuthenticator.classUTTRP] Pҋ\RA/Te&m4MI 2|:ZFq|?qVf$'k>+7X`xK x!ShFQk[Z6-IT\SP\ [pOP̽Q VL۞kR« +! Sfa2[_62Od9BH)QtEH(NN$ Sho` C& 1oق!R$iԪժ9wձ]n,IL/ Ƿ 2|Zr oE*o oq _-;uW:Z_g[rev=B atu=oՕf5maX.յ7#!'^քGUizcaӆF*b0tad?!f8{$p~$Gq GpI,"R'q*uAm̄p;t}pmb;C?p 5ƈ fgkm : tqLoI A8/Y l2$Cw*.Jt14" \~NH%\$ZU0л-c)a;jNF!ܠn匔|C>ͪ 4=4[ nb^E?CY1F&OQ! =?l:)Zt#SVOt\_ `=29x@ŀZ":XQ_Փ)5Xz 3a34++R`RIU!l@{`: 9׉-Z\87T-Nn荡 `Tc;gX񆸡aPR)n4lG$J+#JCB QKB CIBǹAt؋Ĝ2MC5- + 14VnJ:a9B9NIZ!FK&iKM4t*)ڴT֨n I-paT+Vx< kȻs^6(O.BTk CquM˱‹e(gX^H<\0'˪هҋ.aX2kIjU-n(N.-ۖ/\?]B%D,} k .&/\:a,Wn'"Ĺ}X+6`laK\nF/$\N{_I/r4)&ͧ "*W0^ s Ľ_XV}ajah?Z6 /c^,Z|X W;%ۃj65m QnQ)э. >C5ڧRii+2q = (&aSI JT}$taC{C 'Gͮ(֐/qvsb}],C`XLOA|9tXs>}\(bzOǢ<%,a?UjLt9&u$jwGӼN5?qRHnȲRz YnNiB\4 N2b`zo+8Z(&47Sӥ܋xa}]X&5DKY[mƭ^܂א@%kQL5:j}>Ѫk6829d({Hou):p;[1Mb.-i5f/D`b 2Yf)XoۄSn]x;rĉڴA݇w:.r&iEV/ދ{cu֞rIJ]ݲyvd`YdU3y(X6dbwc) u -n{jlJ3 !>T‡hvsZ0(>Be$ &n#8'"wH68HgYqS =W,n#1iX| _ڈ>L<ݗ_W(zw=s)[b>,/=-><,6ƒЀBKSՙ99ES^x--|'jAK-_!7H]yy݁"~pCCj)PX'ZLGPeUf__)u#Xs2@Ȩ9oHJ-(6J'+yyL' eb21ِJ|GVK caPL<@v"퓸0USn 5 wa3}N!z 6uMa3xXQ,1"w3rѳjAl-YekIPVYٻwWhH{$v5#k'lEuY[GjሐA; nؒK\D 6կ @$cH=b YLo.PrUU1PK e *PK!- org/gradle/wrapper/GradleUserHomeLookup.classUTR]OA=C+~XQPTdU( ۍCEbRZv~ev! cF?xh/3sϜsw_NJvޗֈ[ԭ[L00&y$cˡ kH(NXH/u=r _FvK?H=x({%p܀HT̵o7 æV(uTYz$*t=2_+E̽I؍I>pFfX HVRNswzkoﴚn#b)f9%P.Ubg;o\G1t"%! Lao۩k񸱿+7iOnaxEWn"ȂVHКoEɊ"45WiH nN(-%&mY )$p^[|BK1=P +- etFO4$X3> З龍z]o/В }Z,鍩6hWK ^iȡbAJWG't81(o-qeYݲjib*lqIu!loT\jG2 8Y?0= ;/j]7#eP\nzTpSCGQt޽+m%7q-d^#Y$펓,(Ep~qPٓLy|F6˳+1 /\|U.KWPDX2/}zA—ۦRI54TsYn_@ fM^_EZ 9ܩ%uO3ECu#)EiQQJo)$jhS?1M7Q42oҟ`,Ht;֡AW˼'q>3߅d t\h>A3M:s&nDOqۊ[Rtw.MĂ02+*;% E{21)FUiL:9g !&|gx&b+T>e(b1@0RC?;̧)~Q.FhQQJ2cpxd|"0)= 'QpjqC)znMg\JLaO.ݼ &ҴNW:jq3[DV2͵Xx&YGAW;=5/idOi  ʧ6 lD洴k m۳~kcKuOWg=6ƹN4uf-֌\R׋Tx#l zrC fYǍ4ix b1`V%%cm@ őxu 0qեJ%,qjg.wn1@_J_~#YFq7|_$%21GYg*G e G50ٔf% g@j87.YKcRon%tC$nss?_bf^AɖO!kI e8r17-ڲmtx%ے S//c >@DlFh4ۨ'^򕌡j >1Jn?DٝZ LZ^0fڬ͟+Fn4%+c?ŵ(f` U2Fcgs[[Q[k eko9GOotZ[b(ide%)nٖNJ?;T1 9 TX? 47͝Mn<)GAIT/BCWmKft3A`rFMD0}8y6 uw}z\= )䂙פQnpزum O4oa r-GG5 1k훈@$MWTخ%EmxߋATR[Wlq#o?S~鴩nR1sNLŞV*$J̆V)~ "5hp]dZUyX37a/XySHY ~ BCkǩcfqKl1t׍i#e_5'*,%% 6{οf4Xa ˒}(cRo Uiɤ2qlZM6˃@u 3;!̘.Lj )E?T~fZS12oFZ?_\ƲN77g6忩~ht"~|\H`x[)V95-ɘt$X"(%<02H ZbYʒ[#g#B9QPvN,fH3VҬ¤`GU j,VoZ6Csn^T+,|&Z z>7IuRfOpYZ`3J>-Ay$J=fޢCϑT&((UH>c/ЪEZ:WF%GDĢ[:ODu,u3ݼ)+ٷq/,,/ŋҋ S9}%S´$Hhu(~X+ո;i#iSZ, 3jff0_0A1s9E|/k}bQq0A}U$ĬuED](1L %:6#xKQLD,"QL1̷QKzRF1z7d+Xj9kk -fkHfcUWSk0Lo{dԺw• 39l.>Kl[Om< ,9R%ʈQep(G˫sTH~fyV3|5krvZjCKj PyGQW.FhGx׮!m?B mN{ޙXy2 b5-VVX/V,]5LGp>Bׇ2D ѡL8xCهLAtyLtPC%\bҬ@<,c 4y+S9^1x?o׉ 9zq,JbX OL$@zeؖvR> *9zUZ@v%\&Gz3u).Gom_ O{ݠñ\TPwT I+SԠbUZ̼W 񣰓VȔ|FY/ۇYgs<0{r<{Vdkr%yx^>x)WU*B~q^{8 \\zsX;D^8`CQz84yXjFlve 0$}W=z=jpvs:F" 8^'䧀7 s3 oaCupd,T/uC|QC'G8׎G0m9 K =C|_nG CQ;u>xo/=무t.l {*diiM 3̷OgAs| ?/WrJj.#$T z]5=^L(ySzPwr"N.̇)FGҀ'MGfJa[??-(wpa ~-j+ԕ_0oz&0'i>"4YaI;y6RT{M襚d@ =q# յU#Ҵp46'ۏG#ֶ}^{H]!@T9Gh^V9,I!i'z '-nY8dHguz+2Vt2~ٞz37jּdXZ/T6y8Z1L㼞BCXU%FѼJi(k M#m[2$m?:Zp.p/O1=6*h hIG#' =u$PN+{hK9A/LViS5HSt*imb"ڪTrkkl[hےt]Gg~@UwhF 2-ϠiO~{-UϦ%TcoZ:{Li}拾w{# BZ*Ǚtjf:ב>Z{YAM켍ZSeZ' A~Wi6tPK5)PK!" org/gradle/wrapper/Install$1.classUTW |[eI{{=ڮҽnm=XInaMnӻ%%f@mK]Z(cߦn7vM18\/JPZB{&{M5Ջ _5 35((S&k{7 sE g>ٍYO8k#"ιӒf4l$jc kcX I ,"15/<|oFXm9`mRX@u*/NduX"0; "C`8/M2e%XγRX:M`9˶IX;=^L{w@SB'BꡐaSFΧ5G<'Ch(v-3pǸIYdmzVp6'dVc ^MV:dȂXWvKw[7ɄqAPʔKdmR`%]/D Щ\H&vȋ1(ymQI+|"2+0ɘ\Tk.njOƼmRbP6P̼隅"0lۋD 2|hҘ EFJ;(YJ#EfPEiՓĒyb%44{RʊDB|Fn=s[9|]A90WyAa(*FYے';—E\M>J mNj`y1uq9U(Q+1H|wUNqSJNJp*T|aagL!^˿[)鄔dL pn|&'/`#ʢz&S|PݱV7dA{KwQ+x͙D`qs,es2~H|1x?N4~Lۙ[C$ BGٛŃf)Y%^c^=L甝k&3p~$[2,QX'֮/Q@G,EOkx{mK]nϋ8dsRZ6%l%᪸Tu3Tѝ"С}>OfC(mKͨGcc^kfL9^hP*9G.V<@FsmOKd8#l q@TJ:gV"㎩ ըw.Oؤu퇪U|/(*'XVU z+#A_ǿɽ>3lHQCfzjo=zݸ(iCi/>)j]fF8g uf-2k9BKQdQ8cQo[LRzIJ/7.Z_I^I\-QܰWu;1~'*;1W31>_ 1;p$j17Z;))F]s M/X6N݆u)4oC_e0UCh 5sm{w$d} z `pS0-P@ xS@,TOS_JWm.lG.ha`@}t|ǧ`@gn*v7y˽w`O-. I}qW|էT,^`4Ym;t,Rmwv| ?{>eaF?^(/܎|ʓ[/WpS>+K>է3GO΁2 0' A<3gSPSxާ~q|<>H,}<+)/!jg7MRФ. 6";)@iR=9 4 K<܏aG)/H eE~aQ3.26yR>(ƧD)eMJLQ(>VT'Bq]b&Es-؃L EnN.Jtc"*YqQ)HA N3,_A6JebĨK: 9h e'іr2qRli p8OLݒC/< c1݋g%}%} $}R%J5Vt/bb'5DxU".WIzVIoC>$IOʉSp`Q;XspBC{:<ث馔ѕ mho2(a;aRr+ֳts,5;8vmvʹxA)h"aI ^ɣY09PA.]ꮏfmÍZؖVTV4܎3c٨gGM+5/787\wa\@qù\aMk`Z="(HLkcoHN57hô 5_j.cGWđ@xmEt*rP&8m5kBAOwm Q f2]j!~D tA2.=~aZ vRHXK?<̨6,j $dlZ4:~̓:a_sllƣq9,dQ^GJ5]# +[a ۣÎG{N,窾C.U}N;Zx쒍Jyңv1ўYO̓3cLgf B{QkjkLH2L?G?]`=n"Y{nvt>l]4,OSdF;* G:LҔ4C^KxcwC* Yi>CЖq+/ +s 5ǃ%L/KH|^AۢJrtyH襢-)7Ϲ -tPJ-'˟D]_B©80<,UecM3W__"7=[PheCfL2uRMW:1OZ(O0_Hs<)5E \~~IWB.jbo$"RCwL:ϙ }K{$Lߖx'gdۃxpJT_+MШcև`rA  T ?zH<( /3:_`Yy` EyJoХY ǀ/\14J!|]&nn r=`/x=Lfi3sXEJڼoUI%p/ԕ[Wru4GWGcx n[3L[Cu:j ЛCbF`feME2\2-c_!?d8DmDU>jAhŴ9F]Oƫ,=0I+"q"Wh%zZMkJl]#EZ)JL}"mLBu7JөINVs&ߔv9%/[SY |탍)zp*I8>I{'簍}/ёub~m:7'a({b utL|ҩiIYO6M_>bh $>1o<|t z/ f'`oÜ7WOʖZu_!)JV۟7,τXtzk3Ԙ|uEzb֦4-(fZ2/"Izʷ5H^{:́ t'ݍ?.n(@<>x\R9WJt.ϥbn/>O 뒃?,|J@3-jgm2m^^wetb5q:߽jl4ɇ'"H yj!b8y%d-M6#(74q|&8[t|GWK~B|+ǯSFmΨP'xBWcz^ ' De j,ToP 2VTܥBe᧕h >J 8E>`*K- wPK?>gPK! org/gradle/wrapper/Logger.classUTkOAB)B [[XVĄQc FM^^0Wњ2EHچ9? SM^! }[5 | \dSF$0JHޗnDkz6<2O7[ K~Pv|mSK[%AQt-HB^8. ,mڡld~eEY lB SXmUXCJ`" !.i9JĞ@;3^aW`(_ ih 1 3n` ykZGYqj}b41$3A|)^9X<f4 ~˘Mc dyGk4eX|ʅjŗ̫"W+߻ٝWC},(ˇ|e`s}UUjwd7īSVj'b3y\HTB]Y`u5>Enq\;]a+vw/X1oHa*f:؄–Cg`a_^wPK]o;PK!& org/gradle/wrapper/PathAssembler.classUTUJ@gMZE@S+MC 'AQ}&n6a7[x<>8=8 YN`fs=X%OE^*-*U /$nQpHpP.*w|:ဗi2P'I<+ L:bRe2)5ZGoa$>0be%^+ ъDމ*tXmCBEIxjCA\U]08T[ϺCmaи/dbt|ئK#mA7P-PK)>$jPK!0 org/gradle/wrapper/SystemPropertiesHandler.classUTT[wUM;qB knE -x P/x29INfLZX]W^y,Z}Rڦf}oW`|dpkUtʪ)klM*$lp߰ZM?5]/Vha+rr2Ec_k;~[]! ]ҧX'&FU~1e--qvC֓B]# 뒷ZBʏ@4oK-9Xj0 ?kp^X<Vaa.V =m+`3c; 5pAgjv1@:s/8 xO äjŐ8F08N0s:ƕ~O%ʁ4u0^oHm*é=>;8$-E)UB)U,'.&{ 4dv $/!exT%q6JE\ѡa!rb2س&b=c>T?g:>uvXtdcViߤ^;1JJ%jفy,,! xtu_)./3$m7b%Zpg}]oNU=ZY)=\o7HdkZ_KK{tcPDh?ڱ/ *;|\yZ`jQ\ %qF,hPSdE+2י¨0XFPf V1ĕU 6#VdV2 |zK5E Ls\Jʘ.֙nZ8MfEV?級^`ejtZTXR*S,%Y={C xN4PUJYB/(.k\G TLfVjo eʙ|7,nʕRV!}/WLܳ\R/LdH*rl%ѡ`@:XH!nV^d7wwsٳv}0*nAwJg/@0`yAqa#3w.^;)q}t]o`(w+&ujGfG۴"@u4Dx?q7ZVZƎXF^{ Olj ڏ4^1?O섧lk9<_8 M+ض߶ߴzAw GiJFǧa$|so{hSD q;AЛn $AqǮϹ>/8;K?q'+O}k`w|6\?M7n,KvAPKPPK!( org/gradle/wrapper/WrapperExecutor.classUTVwU]BX6Mv J7S:M^ҡ83i  JQTPV*f&iS{~w{ 0vtoj"-OBȊdʚNk N:WdpZp|LJllKJCL*2aY[7%6ޜ'BƠ^/TԔrjfn/onN)7'e8#+!HJ R&!G.T2,<& KERScPW_j| *z1 =pͅEԢ /Ax 抯 8\XEAQ0 uVO((E I/2fu r&Jͅ;;D"3NbNL}4mM?'; O%!.nh~9͵iv/R:2Ce}hȌx1$*40 %ENH&vJ!p}! +ΘhQ](AoV5)ݣqq 6-$fE纛ЊI]KuMn.NQ]xWRӒY~o~+?//^« aumD=87hT<˰紫IFvBɷ$;U.Gd hEm+CGJU\*hb~&.Oq\n|ΰ\(.d٥%%#9* I'ZA_ &v vH-n|=t'E3k/%\Ex.]Wŏ TsHG*~'B.ݸ&{%&B$VMgm%r3ApXJFO+*U錺WqWmIO.X@sa*i`c07XkobM,<`86GPi!D,l5`{c|idnIPix8x,Q1 i Y0-X8y:'q*VyXWEcBxquJ-V\hC-{pĖG1dK'lyglyQȓQRAr$:Cq𱅱$\^'E5#%x},|uޠlia*~w!Ziq!YŶk=@? 0META-INF/MANIFEST.MFUTPK!`zX!p1 org/gradle/cli/CommandLineArgumentException.classUTPK!×n& Dorg/gradle/cli/CommandLineOption.classUTPK!d Z3 org/gradle/cli/CommandLineParser$AfterOptions.classUTPK!1,]< org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.classUTPK!b= rorg/gradle/cli/CommandLineParser$KnownOptionParserState.classUTPK!C'|L< org/gradle/cli/CommandLineParser$MissingOptionArgState.classUTPK![J= #org/gradle/cli/CommandLineParser$OptionAwareParserState.classUTPK!u[z?}8 &org/gradle/cli/CommandLineParser$OptionParserState.classUTPK! C3 (org/gradle/cli/CommandLineParser$OptionString.classUTPK!ɉ2 W+org/gradle/cli/CommandLineParser$ParserState.classUTPK!Kϖs? g-org/gradle/cli/CommandLineParser$UnknownOptionParserState.classUTPK!c& P0org/gradle/cli/CommandLineParser.classUTPK!2w:& \5org/gradle/cli/ParsedCommandLine.classUTPK!ZvmT, 9org/gradle/cli/ParsedCommandLineOption.classUTPK!$O3 ;org/gradle/internal/file/PathTraversalChecker.classUTPK!ywʇA ?org/gradle/internal/file/locking/ExclusiveFileAccessManager.classUTPK!b> Aorg/gradle/util/internal/WrapperDistributionUrlConverter.classUTPK!EҚ/ HCorg/gradle/wrapper/BootstrapMainStarter$1.classUTPK!%)A g {org/gradle/wrapper/Install.classUTPK!]o; org/gradle/wrapper/Logger.classUTPK!)>$j& Borg/gradle/wrapper/PathAssembler.classUTPK!%N0 Îorg/gradle/wrapper/SystemPropertiesHandler.classUTPK!P- Ēorg/gradle/wrapper/WrapperConfiguration.classUTPK!YaS ( org/gradle/wrapper/WrapperExecutor.classUTPK!! Ȝjspecify-1.0.0/gradle/wrapper/gradle-wrapper.properties000066400000000000000000000003721464555076100233130ustar00rootroot00000000000000distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists jspecify-1.0.0/gradlew000077500000000000000000000210721464555076100147160ustar00rootroot00000000000000#!/bin/sh # # Copyright © 2015-2021 the original authors. # # 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 # # https://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. # # SPDX-License-Identifier: Apache-2.0 # ############################################################################## # # Gradle start up script for POSIX generated by Gradle. # # Important for running: # # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is # noncompliant, but you have some other compliant shell such as ksh or # bash, then to run this script, type that shell name before the whole # command line, like: # # ksh Gradle # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: # * functions; # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», # «${var#prefix}», «${var%suffix}», and «$( cmd )»; # * compound commands having a testable exit status, especially «case»; # * various built-in commands including «command», «set», and «ulimit». # # Important for patching: # # (2) This script targets any POSIX shell, so it avoids extensions provided # by Bash, Ksh, etc; in particular arrays are avoided. # # The "traditional" practice of packing multiple parameters into a # space-separated string is a well documented source of bugs and security # problems, so this is (mostly) avoided, by progressively accumulating # options in "$@", and eventually passing that to Java. # # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; # see the in-line comments for details. # # There are tweaks for specific operating systems such as AIX, CygWin, # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. # ############################################################################## # Attempt to set APP_HOME # Resolve links: $0 may be a link app_path=$0 # Need this for daisy-chained symlinks. while APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path [ -h "$app_path" ] do ls=$( ls -ld "$app_path" ) link=${ls#*' -> '} case $link in #( /*) app_path=$link ;; #( *) app_path=$APP_HOME$link ;; esac done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s ' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum warn () { echo "$*" } >&2 die () { echo echo "$*" echo exit 1 } >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case "$( uname )" in #( CYGWIN* ) cygwin=true ;; #( Darwin* ) darwin=true ;; #( MSYS* | MINGW* ) msys=true ;; #( NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD=$JAVA_HOME/jre/sh/java else JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD=java if ! command -v java >/dev/null 2>&1 then die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi # Collect all arguments for the java command, stacking in reverse order: # * args from the command line # * the main class name # * -classpath # * -D...appname settings # * --module-path (only if needed) # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) # Now convert the arguments - kludge to limit ourselves to /bin/sh for arg do if case $arg in #( -*) false ;; # don't mess with options #( /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath [ -e "$t" ] ;; #( *) false ;; esac then arg=$( cygpath --path --ignore --mixed "$arg" ) fi # Roll the args list around exactly as many times as the number of # args, so each arg winds up back in the position where it started, but # possibly modified. # # NB: a `for` loop captures its iteration list before it begins, so # changing the positional parameters here affects neither the number of # iterations, nor the values presented in `arg`. shift # remove old arg set -- "$@" "$arg" # push replacement arg done fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ org.gradle.wrapper.GradleWrapperMain \ "$@" # Stop when "xargs" is not available. if ! command -v xargs >/dev/null 2>&1 then die "xargs is not available" fi # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. # # In Bash we could simply go: # # readarray ARGS < <( xargs -n1 <<<"$var" ) && # set -- "${ARGS[@]}" "$@" # # but POSIX shell has neither arrays nor command substitution, so instead we # post-process each arg (as a line of input to sed) to backslash-escape any # character that might be a shell metacharacter, then use eval to reverse # that process (while maintaining the separation between arguments), and wrap # the whole thing up as a single "set" statement. # # This will of course break if any of these variables contains a newline or # an unmatched quote. # eval "set -- $( printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | xargs -n1 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | tr '\n' ' ' )" '"$@"' exec "$JAVACMD" "$@" jspecify-1.0.0/gradlew.bat000066400000000000000000000056261464555076100154670ustar00rootroot00000000000000@rem @rem Copyright 2015 the original author or authors. @rem @rem Licensed under the Apache License, Version 2.0 (the "License"); @rem you may not use this file except in compliance with the License. @rem You may obtain a copy of the License at @rem @rem https://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS, @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem @rem SPDX-License-Identifier: Apache-2.0 @rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Resolve any "." and ".." in APP_HOME to make it shorter. for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute echo. 1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute echo. 1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 goto fail :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! set EXIT_CODE=%ERRORLEVEL% if %EXIT_CODE% equ 0 set EXIT_CODE=1 if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal :omega jspecify-1.0.0/samples/000077500000000000000000000000001464555076100150055ustar00rootroot00000000000000jspecify-1.0.0/samples/AnnotatedInnerOfNonParameterized.java000066400000000000000000000036211464555076100242400ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked abstract class AnnotatedInnerOfNonParameterized { interface Lib {} class Nested { class DoublyNested {} } void foo( @Nullable Nested x4, // jspecify_nullness_intrinsically_not_nullable @Nullable AnnotatedInnerOfNonParameterized.Nested x5, AnnotatedInnerOfNonParameterized.@Nullable Nested x6, // jspecify_nullness_intrinsically_not_nullable @Nullable AnnotatedInnerOfNonParameterized.Nested.DoublyNested x7, // jspecify_nullness_intrinsically_not_nullable AnnotatedInnerOfNonParameterized.@Nullable Nested.DoublyNested x8, AnnotatedInnerOfNonParameterized.Nested.@Nullable DoublyNested x9, // jspecify_nullness_intrinsically_not_nullable Lib<@Nullable AnnotatedInnerOfNonParameterized.Nested.DoublyNested> l1, // jspecify_nullness_intrinsically_not_nullable Lib l2, Lib l3) {} Nested.DoublyNested create(Nested n) { return n.new DoublyNested(); } // jspecify_nullness_intrinsically_not_nullable abstract @Nullable AnnotatedInnerOfNonParameterized.Nested returnType(); } jspecify-1.0.0/samples/AnnotatedInnerOfParameterized.java000066400000000000000000000036211464555076100235650ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked abstract class AnnotatedInnerOfParameterized { interface Lib {} class Nested { class DoublyNested {} } void foo( @Nullable Nested x4, // jspecify_nullness_intrinsically_not_nullable @Nullable AnnotatedInnerOfParameterized.Nested x5, AnnotatedInnerOfParameterized.@Nullable Nested x6, // jspecify_nullness_intrinsically_not_nullable @Nullable AnnotatedInnerOfParameterized.Nested.DoublyNested x7, // jspecify_nullness_intrinsically_not_nullable AnnotatedInnerOfParameterized.@Nullable Nested.DoublyNested x8, AnnotatedInnerOfParameterized.Nested.@Nullable DoublyNested x9, // jspecify_nullness_intrinsically_not_nullable Lib<@Nullable AnnotatedInnerOfParameterized.Nested.DoublyNested> l1, // jspecify_nullness_intrinsically_not_nullable Lib.@Nullable Nested.DoublyNested> l2, Lib.Nested.DoublyNested> l3) {} Nested.DoublyNested create(Nested n) { return n.new DoublyNested(); } // jspecify_nullness_intrinsically_not_nullable abstract @Nullable AnnotatedInnerOfParameterized.Nested returnType(); } jspecify-1.0.0/samples/AnnotatedReceiver.java000066400000000000000000000022251464555076100212530ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked interface AnnotatedReceiver { void foo(AnnotatedReceiver this); // jspecify_nullness_intrinsically_not_nullable void nullableReceiverInvalid(@Nullable AnnotatedReceiver this); // jspecify_nullness_intrinsically_not_nullable void unspecifiedReceiverInvalid(@NullnessUnspecified AnnotatedReceiver this); // TODO(#157,#158): figure out bar(AnnotatedReceiver<@Nullable T, @NullnessUnspecified U> this) } jspecify-1.0.0/samples/AnnotatedTypeParameter.java000066400000000000000000000021561464555076100222740ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; // Covered by // conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullmarked/AnnotatedTypeParameters.java @NullMarked class AnnotatedTypeParameter { // jspecify_unrecognized_location interface Lib1<@Nullable T> {} // jspecify_unrecognized_location interface Lib2<@Nullable T extends Object> {} // jspecify_unrecognized_location interface Lib3<@Nullable T extends @Nullable Object> {} } jspecify-1.0.0/samples/AnnotatedTypeParameterUnspec.java000066400000000000000000000020661464555076100234520ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class AnnotatedTypeParameterUnspec { // jspecify_unrecognized_location interface Lib1<@NullnessUnspecified T> {} // jspecify_unrecognized_location interface Lib2<@NullnessUnspecified T extends Object> {} // jspecify_unrecognized_location interface Lib3<@NullnessUnspecified T extends @Nullable Object> {} } jspecify-1.0.0/samples/AnnotatedWildcard.java000066400000000000000000000025111464555076100212360ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; // Covered by // conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/nullmarked/AnnotatedWildcards.java @NullMarked class AnnotatedWildcard { interface Lib {} void foo( // jspecify_unrecognized_location Lib<@Nullable ?> x1, // jspecify_unrecognized_location Lib<@Nullable ? extends Object> x2, // jspecify_unrecognized_location Lib<@Nullable ? super Object> x3, // jspecify_unrecognized_location Lib<@Nullable ? extends @Nullable Object> x4, // jspecify_unrecognized_location Lib<@Nullable ? super @Nullable Object> x5) {} } jspecify-1.0.0/samples/AnnotatedWildcardUnspec.java000066400000000000000000000024541464555076100224220ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class AnnotatedWildcardUnspec { interface Lib {} void foo( // jspecify_unrecognized_location Lib<@NullnessUnspecified ?> x1, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? extends Object> x2, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? super Object> x3, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? extends @Nullable Object> x4, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? super @Nullable Object> x5) {} } jspecify-1.0.0/samples/ArraySameType.java000066400000000000000000000032101464555076100203720ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class ArraySameType { interface Lib {} abstract void useArray(Lib l); abstract void useArrayOfUnspec(Lib<@NullnessUnspecified Object[]> l); abstract void useArrayOfUnionNull(Lib<@Nullable Object[]> l); void client(Lib l) { useArray(l); // jspecify_nullness_not_enough_information useArrayOfUnspec(l); // jspecify_nullness_mismatch useArrayOfUnionNull(l); } void clientUnspec(Lib<@NullnessUnspecified Object[]> l) { // jspecify_nullness_not_enough_information useArray(l); // jspecify_nullness_not_enough_information useArrayOfUnspec(l); // jspecify_nullness_not_enough_information useArrayOfUnionNull(l); } void clientUnionNull(Lib<@Nullable Object[]> l) { // jspecify_nullness_mismatch useArray(l); // jspecify_nullness_not_enough_information useArrayOfUnspec(l); useArrayOfUnionNull(l); } } jspecify-1.0.0/samples/ArraySubtype.java000066400000000000000000000027201464555076100203030ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class ArraySubtype { abstract void useArray(Object[] l); abstract void useArrayOfUnspec(@NullnessUnspecified Object[] l); abstract void useArrayOfUnionNull(@Nullable Object[] l); void client(Object[] l) { useArray(l); useArrayOfUnspec(l); useArrayOfUnionNull(l); } void clientUnspec(@NullnessUnspecified Object[] l) { // jspecify_nullness_not_enough_information useArray(l); // jspecify_nullness_not_enough_information useArrayOfUnspec(l); useArrayOfUnionNull(l); } void clientUnionNull(@Nullable Object[] l) { // jspecify_nullness_mismatch useArray(l); // jspecify_nullness_not_enough_information useArrayOfUnspec(l); useArrayOfUnionNull(l); } } jspecify-1.0.0/samples/AssignmentAsExpression.java000066400000000000000000000016071464555076100223300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class AssignmentAsExpression { Object go(@Nullable Object nullable, Object notNull) { Object result; if ((result = nullable) != null) { return result; } return notNull; } } jspecify-1.0.0/samples/AugmentedInferenceAgreesWithBaseInference.java000066400000000000000000000031431464555076100257760ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked abstract class AugmentedInferenceAgreesWithBaseInference { void x(Foo a, Foo<@Nullable Object> b) { // List of possibly heterogeneous Foo types. List> l1 = makeList(a, b); /* * List of some unspecified homogeneous Foo type. There is such a type under plain Java (since * the base type for both is Foo) but not under JSpecify (since one is Foo and * the other is Foo<@Nullable Object>). * * Notice that `makeList(a, b)` is fine "in a vacuum" even under JSpecify (as shown above). Only * here, where the type of the expression is forced to conform to the target type, is there a * problem. */ // jspecify_nullness_mismatch List> l2 = makeList(a, b); } abstract List makeList(T a, T b); interface Foo {} interface List {} } jspecify-1.0.0/samples/BoundedTypeVariableReturn.java000066400000000000000000000024751464555076100227500ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class BoundedTypeVariableReturn { Foo use(FooSupplier supplier) { return supplier.get(); } Foo use(NullableFooSupplier supplier) { // jspecify_nullness_mismatch return supplier.get(); } Lib use(LibOfNullableFooSupplier supplier) { // jspecify_nullness_mismatch return supplier.get(); } interface FooSupplier { F get(); } interface NullableFooSupplier { F get(); } interface LibOfNullableFooSupplier { Lib get(); } interface Foo {} interface Lib {} } jspecify-1.0.0/samples/CaptureAsInferredTypeArgument.java000066400000000000000000000043251464555076100235670ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked interface CaptureAsInferredTypeArgument { interface Lib {} void useImplicitlyObjectBounded(Lib l); void useExplicitlyObjectBounded(Lib l); void useUnspecBounded(Lib l); void useUnionNullBounded(Lib l); default void objectBounded(Lib l) { useImplicitlyObjectBounded(l); useExplicitlyObjectBounded(l); useUnspecBounded(l); useUnionNullBounded(l); } default void unspecBounded(Lib l) { // jspecify_nullness_not_enough_information useImplicitlyObjectBounded(l); // jspecify_nullness_not_enough_information useExplicitlyObjectBounded(l); // jspecify_nullness_not_enough_information useUnspecBounded(l); useUnionNullBounded(l); } default void implicitlyUnionNullBounded(Lib l) { // jspecify_nullness_mismatch useImplicitlyObjectBounded(l); // jspecify_nullness_mismatch useExplicitlyObjectBounded(l); // jspecify_nullness_not_enough_information useUnspecBounded(l); useUnionNullBounded(l); } default void explicitlyUnionNullBounded(Lib l) { // jspecify_nullness_mismatch useImplicitlyObjectBounded(l); // jspecify_nullness_mismatch useExplicitlyObjectBounded(l); // jspecify_nullness_not_enough_information useUnspecBounded(l); useUnionNullBounded(l); } } jspecify-1.0.0/samples/CaptureConversionForSubtyping.java000066400000000000000000000016041464555076100236760ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class CaptureConversionForSubtyping { interface Supplier { U get(); } Object x(Supplier bar) { return bar.get(); } } jspecify-1.0.0/samples/CaptureConvertedToObject.java000066400000000000000000000044271464555076100225660ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class CaptureConvertedToObject { Object x0(ImplicitlyObjectBounded x) { return x.get(); } Object x1(ImplicitlyObjectBounded x) { return x.get(); } Object x2(ImplicitlyObjectBounded x) { return x.get(); } Object x3(ExplicitlyObjectBounded x) { return x.get(); } Object x4(ExplicitlyObjectBounded x) { return x.get(); } Object x5(ExplicitlyObjectBounded x) { return x.get(); } Object x6(UnspecBounded x) { return x.get(); } Object x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } Object x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } Object x9(NullableBounded x) { return x.get(); } Object x10(NullableBounded x) { // jspecify_nullness_not_enough_information return x.get(); } Object x11(NullableBounded x) { // jspecify_nullness_mismatch return x.get(); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} } jspecify-1.0.0/samples/CaptureConvertedToObjectUnionNull.java000066400000000000000000000043461464555076100244320ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class CaptureConvertedToObjectUnionNull { @Nullable Object x0(ImplicitlyObjectBounded x) { return x.get(); } @Nullable Object x1(ImplicitlyObjectBounded x) { return x.get(); } @Nullable Object x2(ImplicitlyObjectBounded x) { return x.get(); } @Nullable Object x3(ExplicitlyObjectBounded x) { return x.get(); } @Nullable Object x4(ExplicitlyObjectBounded x) { return x.get(); } @Nullable Object x5(ExplicitlyObjectBounded x) { return x.get(); } @Nullable Object x6(UnspecBounded x) { return x.get(); } @Nullable Object x7(UnspecBounded x) { return x.get(); } @Nullable Object x8(UnspecBounded x) { return x.get(); } @Nullable Object x9(NullableBounded x) { return x.get(); } @Nullable Object x10(NullableBounded x) { return x.get(); } @Nullable Object x11(NullableBounded x) { return x.get(); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} } jspecify-1.0.0/samples/CaptureConvertedToObjectUnspec.java000066400000000000000000000050471464555076100237430ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class CaptureConvertedToObjectUnspec { @NullnessUnspecified Object x0(ImplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Object x1(ImplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Object x2(ImplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Object x3(ExplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Object x4(ExplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Object x5(ExplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Object x6(UnspecBounded x) { return x.get(); } @NullnessUnspecified Object x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } @NullnessUnspecified Object x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } @NullnessUnspecified Object x9(NullableBounded x) { return x.get(); } @NullnessUnspecified Object x10(NullableBounded x) { // jspecify_nullness_not_enough_information return x.get(); } @NullnessUnspecified Object x11(NullableBounded x) { // jspecify_nullness_not_enough_information return x.get(); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} } jspecify-1.0.0/samples/CaptureConvertedToOther.java000066400000000000000000000043621464555076100224370ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class CaptureConvertedToOther { Lib x0(ImplicitlyObjectBounded x) { return x.get(); } Lib x1(ImplicitlyObjectBounded x) { return x.get(); } Lib x2(ImplicitlyObjectBounded x) { return x.get(); } Lib x3(ExplicitlyObjectBounded x) { return x.get(); } Lib x4(ExplicitlyObjectBounded x) { return x.get(); } Lib x5(ExplicitlyObjectBounded x) { return x.get(); } Lib x6(UnspecBounded x) { return x.get(); } Lib x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } Lib x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } Lib x9(NullableBounded x) { return x.get(); } Lib x10(NullableBounded x) { // jspecify_nullness_not_enough_information return x.get(); } Lib x11(NullableBounded x) { // jspecify_nullness_mismatch return x.get(); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} } jspecify-1.0.0/samples/CaptureConvertedToOtherUnionNull.java000066400000000000000000000043011464555076100242740ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class CaptureConvertedToOtherUnionNull { @Nullable Lib x0(ImplicitlyObjectBounded x) { return x.get(); } @Nullable Lib x1(ImplicitlyObjectBounded x) { return x.get(); } @Nullable Lib x2(ImplicitlyObjectBounded x) { return x.get(); } @Nullable Lib x3(ExplicitlyObjectBounded x) { return x.get(); } @Nullable Lib x4(ExplicitlyObjectBounded x) { return x.get(); } @Nullable Lib x5(ExplicitlyObjectBounded x) { return x.get(); } @Nullable Lib x6(UnspecBounded x) { return x.get(); } @Nullable Lib x7(UnspecBounded x) { return x.get(); } @Nullable Lib x8(UnspecBounded x) { return x.get(); } @Nullable Lib x9(NullableBounded x) { return x.get(); } @Nullable Lib x10(NullableBounded x) { return x.get(); } @Nullable Lib x11(NullableBounded x) { return x.get(); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} } jspecify-1.0.0/samples/CaptureConvertedToOtherUnspec.java000066400000000000000000000050021464555076100236050ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class CaptureConvertedToOtherUnspec { @NullnessUnspecified Lib x0(ImplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Lib x1(ImplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Lib x2(ImplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Lib x3(ExplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Lib x4(ExplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Lib x5(ExplicitlyObjectBounded x) { return x.get(); } @NullnessUnspecified Lib x6(UnspecBounded x) { return x.get(); } @NullnessUnspecified Lib x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } @NullnessUnspecified Lib x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return x.get(); } @NullnessUnspecified Lib x9(NullableBounded x) { return x.get(); } @NullnessUnspecified Lib x10(NullableBounded x) { // jspecify_nullness_not_enough_information return x.get(); } @NullnessUnspecified Lib x11(NullableBounded x) { // jspecify_nullness_not_enough_information return x.get(); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} } jspecify-1.0.0/samples/CaptureConvertedUnionNullToObject.java000066400000000000000000000053341464555076100244300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnionNullToObject { Object x0(ImplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x1(ImplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x2(ImplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x3(ExplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x4(ExplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x5(ExplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x6(UnspecBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x7(UnspecBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x8(UnspecBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x9(NullableBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x10(NullableBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Object x11(NullableBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @Nullable T unionNull(T input); } jspecify-1.0.0/samples/CaptureConvertedUnionNullToObjectUnionNull.java000066400000000000000000000047051464555076100262750ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnionNullToObjectUnionNull { @Nullable Object x0(ImplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Object x1(ImplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Object x2(ImplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Object x3(ExplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Object x4(ExplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Object x5(ExplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Object x6(UnspecBounded x) { return unionNull(x.get()); } @Nullable Object x7(UnspecBounded x) { return unionNull(x.get()); } @Nullable Object x8(UnspecBounded x) { return unionNull(x.get()); } @Nullable Object x9(NullableBounded x) { return unionNull(x.get()); } @Nullable Object x10(NullableBounded x) { return unionNull(x.get()); } @Nullable Object x11(NullableBounded x) { return unionNull(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @Nullable T unionNull(T input); } jspecify-1.0.0/samples/CaptureConvertedUnionNullToObjectUnspec.java000066400000000000000000000062061464555076100256050ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnionNullToObjectUnspec { @NullnessUnspecified Object x0(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x1(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x2(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x3(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x4(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x5(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x6(UnspecBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x9(NullableBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x10(NullableBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Object x11(NullableBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @Nullable T unionNull(T input); } jspecify-1.0.0/samples/CaptureConvertedUnionNullToOther.java000066400000000000000000000052671464555076100243100ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnionNullToOther { Lib x0(ImplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x1(ImplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x2(ImplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x3(ExplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x4(ExplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x5(ExplicitlyObjectBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x6(UnspecBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x7(UnspecBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x8(UnspecBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x9(NullableBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x10(NullableBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } Lib x11(NullableBounded x) { // jspecify_nullness_mismatch return unionNull(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @Nullable T unionNull(T input); } jspecify-1.0.0/samples/CaptureConvertedUnionNullToOtherUnionNull.java000066400000000000000000000046401464555076100261460ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnionNullToOtherUnionNull { @Nullable Lib x0(ImplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Lib x1(ImplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Lib x2(ImplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Lib x3(ExplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Lib x4(ExplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Lib x5(ExplicitlyObjectBounded x) { return unionNull(x.get()); } @Nullable Lib x6(UnspecBounded x) { return unionNull(x.get()); } @Nullable Lib x7(UnspecBounded x) { return unionNull(x.get()); } @Nullable Lib x8(UnspecBounded x) { return unionNull(x.get()); } @Nullable Lib x9(NullableBounded x) { return unionNull(x.get()); } @Nullable Lib x10(NullableBounded x) { return unionNull(x.get()); } @Nullable Lib x11(NullableBounded x) { return unionNull(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @Nullable T unionNull(T input); } jspecify-1.0.0/samples/CaptureConvertedUnionNullToOtherUnspec.java000066400000000000000000000061411464555076100254560ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnionNullToOtherUnspec { @NullnessUnspecified Lib x0(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x1(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x2(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x3(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x4(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x5(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x6(UnspecBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x9(NullableBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x10(NullableBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } @NullnessUnspecified Lib x11(NullableBounded x) { // jspecify_nullness_not_enough_information return unionNull(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @Nullable T unionNull(T input); } jspecify-1.0.0/samples/CaptureConvertedUnspecToObject.java000066400000000000000000000055271464555076100237460ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnspecToObject { Object x0(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x1(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x2(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x3(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x4(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x5(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x6(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x9(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x10(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Object x11(NullableBounded x) { // jspecify_nullness_mismatch return unspec(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @NullnessUnspecified T unspec(T input); } jspecify-1.0.0/samples/CaptureConvertedUnspecToObjectUnionNull.java000066400000000000000000000046461464555076100256130ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnspecToObjectUnionNull { @Nullable Object x0(ImplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Object x1(ImplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Object x2(ImplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Object x3(ExplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Object x4(ExplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Object x5(ExplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Object x6(UnspecBounded x) { return unspec(x.get()); } @Nullable Object x7(UnspecBounded x) { return unspec(x.get()); } @Nullable Object x8(UnspecBounded x) { return unspec(x.get()); } @Nullable Object x9(NullableBounded x) { return unspec(x.get()); } @Nullable Object x10(NullableBounded x) { return unspec(x.get()); } @Nullable Object x11(NullableBounded x) { return unspec(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @NullnessUnspecified T unspec(T input); } jspecify-1.0.0/samples/CaptureConvertedUnspecToObjectUnspec.java000066400000000000000000000061471464555076100251230ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnspecToObjectUnspec { @NullnessUnspecified Object x0(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x1(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x2(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x3(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x4(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x5(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x6(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x9(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x10(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Object x11(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @NullnessUnspecified T unspec(T input); } jspecify-1.0.0/samples/CaptureConvertedUnspecToOther.java000066400000000000000000000054621464555076100236170ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnspecToOther { Lib x0(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x1(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x2(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x3(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x4(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x5(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x6(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x9(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x10(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } Lib x11(NullableBounded x) { // jspecify_nullness_mismatch return unspec(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @NullnessUnspecified T unspec(T input); } jspecify-1.0.0/samples/CaptureConvertedUnspecToOtherUnionNull.java000066400000000000000000000046011464555076100254550ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnspecToOtherUnionNull { @Nullable Lib x0(ImplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Lib x1(ImplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Lib x2(ImplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Lib x3(ExplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Lib x4(ExplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Lib x5(ExplicitlyObjectBounded x) { return unspec(x.get()); } @Nullable Lib x6(UnspecBounded x) { return unspec(x.get()); } @Nullable Lib x7(UnspecBounded x) { return unspec(x.get()); } @Nullable Lib x8(UnspecBounded x) { return unspec(x.get()); } @Nullable Lib x9(NullableBounded x) { return unspec(x.get()); } @Nullable Lib x10(NullableBounded x) { return unspec(x.get()); } @Nullable Lib x11(NullableBounded x) { return unspec(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @NullnessUnspecified T unspec(T input); } jspecify-1.0.0/samples/CaptureConvertedUnspecToOtherUnspec.java000066400000000000000000000061021464555076100247650ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class CaptureConvertedUnspecToOtherUnspec { @NullnessUnspecified Lib x0(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x1(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x2(ImplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x3(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x4(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x5(ExplicitlyObjectBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x6(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x7(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x8(UnspecBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x9(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x10(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } @NullnessUnspecified Lib x11(NullableBounded x) { // jspecify_nullness_not_enough_information return unspec(x.get()); } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} abstract @NullnessUnspecified T unspec(T input); } CastOfCaptureOfNotNullMarkedUnboundedWildcardForObjectBoundedTypeParameter.java000066400000000000000000000020371464555076100343430ustar00rootroot00000000000000jspecify-1.0.0/samples/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; class CastOfCaptureOfNotNullMarkedUnboundedWildcardForObjectBoundedTypeParameter { @NullMarked interface Super { void consume(Bar bar); } abstract class Sub implements Super { void x(Supplier supplier) { if (supplier != null) { consume((Bar) supplier.get()); } } } @NullMarked interface Supplier { T get(); } @NullMarked interface Bar {} } CastOfCaptureOfUnboundedWildcardForNotNullMarkedObjectBoundedTypeParameter.java000066400000000000000000000021231464555076100343370ustar00rootroot00000000000000jspecify-1.0.0/samples/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; class CastOfCaptureOfUnboundedWildcardForNotNullMarkedObjectBoundedTypeParameter { @NullMarked interface Super { void consume(Bar bar); } @NullMarked abstract class Sub implements Super { void x(Supplier supplier) { if (supplier != null) { // jspecify_nullness_not_enough_information consume((Bar) supplier.get()); } } } interface Supplier { T get(); } @NullMarked interface Bar {} } jspecify-1.0.0/samples/CastOfCaptureOfUnboundedWildcardForObjectBoundedTypeParameter.java000066400000000000000000000016221464555076100317610ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; @NullMarked abstract class CastOfCaptureOfUnboundedWildcardForObjectBoundedTypeParameter { abstract void consume(Bar bar); void x(Supplier supplier) { consume((Bar) supplier.get()); } interface Supplier { T get(); } interface Bar {} } jspecify-1.0.0/samples/CastToPrimitive.java000066400000000000000000000020111464555076100207300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class CastToPrimitive { int x0(Object o) { return (int) o; } int x1(@NullnessUnspecified Object o) { // jspecify_nullness_not_enough_information return (int) o; } int x2(@Nullable Object o) { // jspecify_nullness_mismatch return (int) o; } } jspecify-1.0.0/samples/CastWildcardToTypeVariable.java000066400000000000000000000020411464555076100230240ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class CastWildcardToTypeVariable { T x(NullableSupplier supplier) { // jspecify_nullness_mismatch return (T) supplier.get(); } interface NullableSupplier { T get(); } T x(NonNullSupplier supplier) { return (T) supplier.get(); } interface NonNullSupplier { T get(); } } jspecify-1.0.0/samples/Catch.java000066400000000000000000000026061464555076100166760ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; @NullMarked abstract class Catch { void x() { try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); // TODO(cpovirk): Edit README to permit referencing java.lang.Exception. Or remove this. } try { doWork(); } catch (SomeError | SomeRuntimeException e) { } catch (Throwable e) { e.printStackTrace(); } try { throw new RuntimeException(); } catch (RuntimeException | Error e) { handleException(e); } } abstract void handleException(Throwable t); abstract void doWork() throws SomeException; static class SomeException extends Exception {} static class SomeRuntimeException extends RuntimeException {} static class SomeError extends Error {} } jspecify-1.0.0/samples/ClassLiteral.java000066400000000000000000000014671464555076100202420ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; @NullMarked class ClassLiteral { Object x0() { return ClassLiteral.class; } Object x1() { return int.class; } Object x2() { return void.class; } } jspecify-1.0.0/samples/ClassToObject.java000066400000000000000000000030721464555076100203510ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ClassToObject { Object x0(ClassToObject x) { return x; } Object x1(@NullnessUnspecified ClassToObject x) { // jspecify_nullness_not_enough_information return x; } Object x2(@Nullable ClassToObject x) { // jspecify_nullness_mismatch return x; } @NullnessUnspecified Object x3(ClassToObject x) { return x; } @NullnessUnspecified Object x4(@NullnessUnspecified ClassToObject x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x5(@Nullable ClassToObject x) { // jspecify_nullness_not_enough_information return x; } @Nullable Object x6(ClassToObject x) { return x; } @Nullable Object x7(@NullnessUnspecified ClassToObject x) { return x; } @Nullable Object x8(@Nullable ClassToObject x) { return x; } } jspecify-1.0.0/samples/ClassToSelf.java000066400000000000000000000027271464555076100200420ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ClassToSelf { Lib x0(Lib x) { return x; } Lib x1(@NullnessUnspecified Lib x) { // jspecify_nullness_not_enough_information return x; } Lib x2(@Nullable Lib x) { // jspecify_nullness_mismatch return x; } @NullnessUnspecified Lib x3(Lib x) { return x; } @NullnessUnspecified Lib x4(@NullnessUnspecified Lib x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x5(@Nullable Lib x) { // jspecify_nullness_not_enough_information return x; } @Nullable Lib x6(Lib x) { return x; } @Nullable Lib x7(@NullnessUnspecified Lib x) { return x; } @Nullable Lib x8(@Nullable Lib x) { return x; } interface Lib {} } jspecify-1.0.0/samples/ComplexParametric.java000066400000000000000000000220601464555076100212670ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; /* * Warning: I have probably gotten some things wrong in adding jspecify_* comments in this file. * (Now, that may be the case for *any* file :) But it is particularly likely in this one.) * Additionally, some checks would probably have different results under slightly different * implementations of type inference and/or if we passed explicit type arguments. Fortunately, most * of the checks here are for edge cases that are unlikely to arise in practice. */ @NullMarked class ComplexParametric { interface SuperSuper { Lib t(); Lib<@NullnessUnspecified T> tUnspec(); Lib<@Nullable T> tUnionNull(); void checkT(Lib lib); void checkTUnspec(Lib<@NullnessUnspecified T> lib); void checkTUnionNull(Lib<@Nullable T> lib); // And some method that do not use T: void checkNeverNull(Lib lib); void checkUnspecNull(Lib<@NullnessUnspecified U> lib); } interface SuperNeverNever extends SuperSuper { default void x() { checkNeverNull(t()); // jspecify_nullness_not_enough_information checkUnspecNull(t()); checkT(t()); // jspecify_nullness_not_enough_information checkTUnspec(t()); // jspecify_nullness_mismatch checkTUnionNull(t()); // jspecify_nullness_not_enough_information checkNeverNull(tUnspec()); // jspecify_nullness_not_enough_information checkUnspecNull(tUnspec()); // jspecify_nullness_not_enough_information checkT(tUnspec()); // jspecify_nullness_not_enough_information checkTUnspec(tUnspec()); // jspecify_nullness_not_enough_information checkTUnionNull(tUnspec()); // jspecify_nullness_mismatch checkNeverNull(tUnionNull()); // jspecify_nullness_not_enough_information this.checkUnspecNull(tUnionNull()); // jspecify_nullness_mismatch checkT(tUnionNull()); // jspecify_nullness_not_enough_information checkTUnspec(tUnionNull()); checkTUnionNull(tUnionNull()); } } interface SuperNeverUnspec extends SuperSuper { default void x() { checkNeverNull(t()); // jspecify_nullness_not_enough_information checkUnspecNull(t()); checkT(t()); // jspecify_nullness_not_enough_information checkTUnspec(t()); // jspecify_nullness_mismatch checkTUnionNull(t()); // jspecify_nullness_not_enough_information checkNeverNull(tUnspec()); // jspecify_nullness_not_enough_information checkUnspecNull(tUnspec()); // jspecify_nullness_not_enough_information checkT(tUnspec()); // jspecify_nullness_not_enough_information checkTUnspec(tUnspec()); // jspecify_nullness_not_enough_information checkTUnionNull(tUnspec()); // jspecify_nullness_mismatch checkNeverNull(tUnionNull()); // jspecify_nullness_not_enough_information this.checkUnspecNull(tUnionNull()); // jspecify_nullness_mismatch checkT(tUnionNull()); // jspecify_nullness_not_enough_information checkTUnspec(tUnionNull()); checkTUnionNull(tUnionNull()); } } interface SuperNeverUnionNull extends SuperSuper { default void x() { checkNeverNull(t()); // jspecify_nullness_not_enough_information checkUnspecNull(t()); checkT(t()); // jspecify_nullness_not_enough_information checkTUnspec(t()); // jspecify_nullness_mismatch checkTUnionNull(t()); // jspecify_nullness_not_enough_information checkNeverNull(tUnspec()); // jspecify_nullness_not_enough_information checkUnspecNull(tUnspec()); // jspecify_nullness_not_enough_information checkT(tUnspec()); // jspecify_nullness_not_enough_information checkTUnspec(tUnspec()); // jspecify_nullness_not_enough_information checkTUnionNull(tUnspec()); // jspecify_nullness_mismatch checkNeverNull(tUnionNull()); // jspecify_nullness_not_enough_information this.checkUnspecNull(tUnionNull()); // jspecify_nullness_mismatch checkT(tUnionNull()); // jspecify_nullness_not_enough_information checkTUnspec(tUnionNull()); checkTUnionNull(tUnionNull()); } } interface SuperUnspecNever extends SuperSuper { default void x() { checkNeverNull(t()); // jspecify_nullness_not_enough_information checkUnspecNull(t()); checkT(t()); // jspecify_nullness_not_enough_information checkTUnspec(t()); // jspecify_nullness_mismatch checkTUnionNull(t()); // jspecify_nullness_not_enough_information checkNeverNull(tUnspec()); // jspecify_nullness_not_enough_information checkUnspecNull(tUnspec()); // jspecify_nullness_not_enough_information checkT(tUnspec()); // jspecify_nullness_not_enough_information checkTUnspec(tUnspec()); // jspecify_nullness_not_enough_information checkTUnionNull(tUnspec()); // jspecify_nullness_mismatch checkNeverNull(tUnionNull()); // jspecify_nullness_not_enough_information this.checkUnspecNull(tUnionNull()); // jspecify_nullness_mismatch checkT(tUnionNull()); // jspecify_nullness_not_enough_information checkTUnspec(tUnionNull()); checkTUnionNull(tUnionNull()); } } interface SuperUnspecUnspec extends SuperSuper { // TODO(cpovirk): Add method calls like in the other classes. } interface SuperUnspecUnionNull extends SuperSuper { // TODO(cpovirk): Add method calls like in the other classes. } interface SuperUnionNullNever extends SuperSuper { default void x() { checkNeverNull(t()); // jspecify_nullness_not_enough_information checkUnspecNull(t()); checkT(t()); // jspecify_nullness_not_enough_information checkTUnspec(t()); // jspecify_nullness_mismatch checkTUnionNull(t()); // jspecify_nullness_not_enough_information checkNeverNull(tUnspec()); // jspecify_nullness_not_enough_information checkUnspecNull(tUnspec()); // jspecify_nullness_not_enough_information checkT(tUnspec()); // jspecify_nullness_not_enough_information checkTUnspec(tUnspec()); // jspecify_nullness_not_enough_information checkTUnionNull(tUnspec()); // jspecify_nullness_mismatch checkNeverNull(tUnionNull()); // jspecify_nullness_not_enough_information this.checkUnspecNull(tUnionNull()); // jspecify_nullness_mismatch checkT(tUnionNull()); // jspecify_nullness_not_enough_information checkTUnspec(tUnionNull()); checkTUnionNull(tUnionNull()); } } interface SuperUnionNullUnspec extends SuperSuper { // TODO(cpovirk): Add method calls like in the other classes. } interface SuperUnionNullUnionNull extends SuperSuper { default void x() { // jspecify_nullness_mismatch checkNeverNull(t()); // jspecify_nullness_mismatch checkUnspecNull(t()); checkT(t()); // jspecify_nullness_not_enough_information checkTUnspec(t()); // jspecify_nullness_mismatch checkTUnionNull(t()); // jspecify_nullness_mismatch checkNeverNull(tUnspec()); // jspecify_nullness_not_enough_information checkUnspecNull(tUnspec()); // jspecify_nullness_not_enough_information checkT(tUnspec()); // jspecify_nullness_not_enough_information checkTUnspec(tUnspec()); // jspecify_nullness_not_enough_information checkTUnionNull(tUnspec()); // jspecify_nullness_mismatch checkNeverNull(tUnionNull()); // jspecify_nullness_not_enough_information this.checkUnspecNull(tUnionNull()); // jspecify_nullness_mismatch checkT(tUnionNull()); // jspecify_nullness_not_enough_information checkTUnspec(tUnionNull()); checkTUnionNull(tUnionNull()); } } interface Foo {} interface Lib {} } jspecify-1.0.0/samples/ConcatResult.java000066400000000000000000000020171464555076100202560ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ConcatResult { String constant() { return "a" + "b"; } String variable(Object o) { return "a" + o; } String variableUnspec(@NullnessUnspecified Object o) { return "a" + o; } String variableUnionNull(@Nullable Object o) { return "a" + o; } } jspecify-1.0.0/samples/ConflictingAnnotations.java000066400000000000000000000016721464555076100223330ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ConflictingAnnotations { // jspecify_conflicting_annotations @Nullable @NullnessUnspecified Object x1; // jspecify_conflicting_annotations @NullnessUnspecified @Nullable Object x2; } jspecify-1.0.0/samples/Constants.java000066400000000000000000000017131464555076100176260ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; class Constants { @NullMarked class User { Object x0() { return ""; } Object x1() { return 1; } Object x2() { return 'a'; } Object x3() { return true; } Object x4() { return Color.RED; } } enum Color { RED, GREEN, BLUE, } } jspecify-1.0.0/samples/ContainmentExtends.java000066400000000000000000000034361464555076100214700ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ContainmentExtends { void x() { new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_mismatch new Check, Lib>(); new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); new Check, Lib>(); new Check, Lib>(); } interface Lib {} interface Foo {} static class Check {} } jspecify-1.0.0/samples/ContainmentExtendsBounded.java000066400000000000000000000020551464555076100227650ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class ContainmentExtendsBounded { void x() { new Check, Lib>(); new Check, Lib>(); new Check, Lib>(); } interface Lib {} interface Foo {} static class Check {} } jspecify-1.0.0/samples/ContainmentSuper.java000066400000000000000000000033701464555076100211510ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ContainmentSuper { void x() { new Check, Lib>(); new Check, Lib>(); new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); // jspecify_nullness_mismatch new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); } interface Lib {} interface Foo {} static class Check {} } jspecify-1.0.0/samples/ContainmentSuperVsExtends.java000066400000000000000000000023751464555076100230210ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ContainmentSuperVsExtends { void x() { // jspecify_nullness_mismatch new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); new Check, Lib>(); } interface Lib {} interface Foo {} static class Check {} } jspecify-1.0.0/samples/ContainmentSuperVsExtendsSameType.java000066400000000000000000000017161464555076100244670ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class ContainmentSuperVsExtendsSameType { void x() { // jspecify_nullness_mismatch new Check, Lib>(); } interface Lib {} static class Check {} } jspecify-1.0.0/samples/ContravariantReturns.java000066400000000000000000000023641464555076100220530ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked interface ContravariantReturns { Object makeObject(); Lib makeImplicitlyObjectBounded(); Lib makeExplicitlyObjectBounded(); interface Subtype extends ContravariantReturns { @Override // jspecify_nullness_mismatch @Nullable Object makeObject(); @Override // jspecify_nullness_mismatch Lib makeImplicitlyObjectBounded(); @Override // jspecify_nullness_mismatch Lib makeExplicitlyObjectBounded(); } interface Lib {} } jspecify-1.0.0/samples/CovariantReturns.java000066400000000000000000000026131464555076100211630ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked interface CovariantReturns { @Nullable Object makeObject(); Lib makeImplicitlyObjectBounded(); Lib makeExplicitlyObjectBounded(); interface Subtype extends CovariantReturns { @Override Object makeObject(); @Override Lib makeImplicitlyObjectBounded(); @Override Lib makeExplicitlyObjectBounded(); } default void go(Subtype s) { checkObject(s.makeObject()); checkLibOfObject(s.makeImplicitlyObjectBounded()); checkLibOfObject(s.makeExplicitlyObjectBounded()); } void checkObject(Object o); void checkLibOfObject(Lib o); interface Lib {} } jspecify-1.0.0/samples/DereferenceClass.java000066400000000000000000000020371464555076100210470ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class DereferenceClass { void x0(Lib x) { x.run(); } void x1(@NullnessUnspecified Lib x) { // jspecify_nullness_not_enough_information x.run(); } void x2(@Nullable Lib x) { // jspecify_nullness_mismatch x.run(); } interface Lib { void run(); } } jspecify-1.0.0/samples/DereferenceIntersection.java000066400000000000000000000046621464555076100224560ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class DereferenceIntersection { void x0(ImplicitlyObjectBounded x) { synchronized (x.get()) { } } void x1(ImplicitlyObjectBounded x) { synchronized (x.get()) { } } void x2(ImplicitlyObjectBounded x) { synchronized (x.get()) { } } void x3(ExplicitlyObjectBounded x) { synchronized (x.get()) { } } void x4(ExplicitlyObjectBounded x) { synchronized (x.get()) { } } void x5(ExplicitlyObjectBounded x) { synchronized (x.get()) { } } void x6(UnspecBounded x) { synchronized (x.get()) { } } void x7(UnspecBounded x) { // jspecify_nullness_not_enough_information synchronized (x.get()) { } } void x8(UnspecBounded x) { // jspecify_nullness_not_enough_information synchronized (x.get()) { } } void x9(NullableBounded x) { synchronized (x.get()) { } } void x10(NullableBounded x) { // jspecify_nullness_not_enough_information synchronized (x.get()) { } } void x11(NullableBounded x) { // jspecify_nullness_mismatch synchronized (x.get()) { } } interface ImplicitlyObjectBounded { T get(); } interface ExplicitlyObjectBounded { T get(); } interface UnspecBounded { T get(); } interface NullableBounded { T get(); } interface Lib {} } jspecify-1.0.0/samples/DereferenceTernary.java000066400000000000000000000015701464555076100214270ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked abstract class DereferenceTernary { void x(boolean b, @Nullable Lib x, Lib y) { // jspecify_nullness_mismatch (b ? x : y).run(); } interface Lib { void run(); } } jspecify-1.0.0/samples/DereferenceTypeVariable.java000066400000000000000000000060601464555076100223710ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class DereferenceTypeVariable< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { void x0(Never1T x) { synchronized (x) { } } void x1(ChildOfNever1T x) { synchronized (x) { } } void x2(UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information synchronized (x) { } } void x3(NullChildOfNever1T x) { // jspecify_nullness_mismatch synchronized (x) { } } void x4(Never2T x) { synchronized (x) { } } void x5(ChildOfNever2T x) { synchronized (x) { } } void x6(UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information synchronized (x) { } } void x7(NullChildOfNever2T x) { // jspecify_nullness_mismatch synchronized (x) { } } void x8(UnspecT x) { // jspecify_nullness_not_enough_information synchronized (x) { } } void x9(ChildOfUnspecT x) { // jspecify_nullness_not_enough_information synchronized (x) { } } void x10(UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information synchronized (x) { } } void x11(NullChildOfUnspecT x) { // jspecify_nullness_mismatch synchronized (x) { } } void x12(ParametricT x) { // jspecify_nullness_mismatch synchronized (x) { } } void x13(ChildOfParametricT x) { // jspecify_nullness_mismatch synchronized (x) { } } void x14(UnspecChildOfParametricT x) { // jspecify_nullness_mismatch synchronized (x) { } } void x15(NullChildOfParametricT x) { // jspecify_nullness_mismatch synchronized (x) { } } } jspecify-1.0.0/samples/EnumAnnotations.java000066400000000000000000000016501464555076100207740ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked enum EnumAnnotations { // jspecify_nullness_intrinsically_not_nullable @Nullable FOO, // jspecify_nullness_intrinsically_not_nullable @NullnessUnspecified BAR, BAZ; } jspecify-1.0.0/samples/ExtendsSameType.java000066400000000000000000000033411464555076100207330ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class ExtendsSameType { interface Foo {} interface Lib {} interface Supplier {} abstract void use(Lib> l); abstract void useUnspec(Lib> l); abstract void useUnionNull(Lib> l); void client(Lib> l) { use(l); // jspecify_nullness_not_enough_information useUnspec(l); // jspecify_nullness_mismatch useUnionNull(l); } void clientUnspec(Lib> l) { // jspecify_nullness_not_enough_information use(l); // jspecify_nullness_not_enough_information useUnspec(l); // jspecify_nullness_not_enough_information useUnionNull(l); } void clientUnionNull(Lib> l) { // jspecify_nullness_mismatch use(l); // jspecify_nullness_not_enough_information useUnspec(l); useUnionNull(l); } } jspecify-1.0.0/samples/ExtendsTypeVariableImplementedForNullableTypeArgument.java000066400000000000000000000031321464555076100304500ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class ExtendsTypeVariableImplementedForNullableTypeArgument { interface Filter { boolean filterOne(T t); Sequence filterMany(Sequence in); } interface Sub0 extends Filter<@Nullable Object> { // jspecify_nullness_mismatch Sequence filterMany(Sequence in); } interface Sub1 extends Filter<@Nullable Object> { // jspecify_nullness_mismatch Sequence filterMany(Sequence in); } interface Sub2 extends Filter<@Nullable Object> { // jspecify_nullness_not_enough_information Sequence filterMany(Sequence in); } interface Sub3 extends Filter<@Nullable Object> { Sequence filterMany(Sequence in); } interface Sequence {} } jspecify-1.0.0/samples/ExtendsVsExtendsNullable.java000066400000000000000000000033631464555076100226120ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked interface ExtendsVsExtendsNullable { interface Supplier {} interface Other {} default void x(Supplier s, Other o) { useNonNullBounded(s, o); useUnspecBounded(s, o); useUnionNullBounded(s, o); } default void x1(Supplier s, Other o) { // jspecify_nullness_not_enough_information useNonNullBounded(s, o); // jspecify_nullness_not_enough_information useUnspecBounded(s, o); useUnionNullBounded(s, o); } default void x2(Supplier s, Other o) { // jspecify_nullness_mismatch useNonNullBounded(s, o); // jspecify_nullness_not_enough_information useUnspecBounded(s, o); useUnionNullBounded(s, o); } void useNonNullBounded(Supplier s, Other o); void useUnspecBounded(Supplier s, Other o); void useUnionNullBounded(Supplier s, Other o); } jspecify-1.0.0/samples/IfCondition.java000066400000000000000000000022661464555076100200630ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class IfCondition { abstract int i(); abstract int j(); abstract boolean b(); abstract Boolean boxed(); abstract @NullnessUnspecified Boolean boxedUnspec(); abstract @Nullable Boolean boxedUnionNull(); void go() { if (i() == j()) {} if (b()) {} if (boxed()) {} // jspecify_nullness_not_enough_information if (boxedUnspec()) {} // jspecify_nullness_mismatch if (boxedUnionNull()) {} } } jspecify-1.0.0/samples/InferenceChoosesNullableTypeVariable.java000066400000000000000000000015511464555076100250630ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked interface InferenceChoosesNullableTypeVariable { void consume(T t); default void go(@Nullable E value) { consume(value); } } jspecify-1.0.0/samples/InstanceOfCheck.java000066400000000000000000000023271464555076100206430ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class InstanceOfCheck { Object x0(Object o) { if (o instanceof Foo) { return o; } else { return o; } } Object x1(@NullnessUnspecified Object o) { if (o instanceof Foo) { return o; } else { // jspecify_nullness_not_enough_information return o; } } Object x2(@Nullable Object o) { if (o instanceof Foo) { return o; } else { // jspecify_nullness_mismatch return o; } } class Foo {} } jspecify-1.0.0/samples/IntersectionSupertype.java000066400000000000000000000050551464555076100222440ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked interface IntersectionSupertype { void x0(T t); void x1(T t); void x2(T t); void x3(T t); void x4(T t); void x5(T t); void x6(T t); void x7(T t); void x8(T t); default void useLib(Lib lib) { x0(lib); x1(lib); x2(lib); x3(lib); x4(lib); x5(lib); x6(lib); x7(lib); x8(lib); } default void useLibUnspec(@NullnessUnspecified Lib lib) { // jspecify_nullness_not_enough_information x0(lib); // jspecify_nullness_not_enough_information x1(lib); // jspecify_nullness_not_enough_information x2(lib); // jspecify_nullness_not_enough_information x3(lib); // jspecify_nullness_not_enough_information x4(lib); // jspecify_nullness_not_enough_information x5(lib); // jspecify_nullness_not_enough_information x6(lib); // jspecify_nullness_not_enough_information x7(lib); this.<@Nullable Lib>x8(lib); } default void useLibUnionNull(@Nullable Lib lib) { // jspecify_nullness_mismatch x0(lib); // jspecify_nullness_mismatch x1(lib); // jspecify_nullness_mismatch x2(lib); // jspecify_nullness_mismatch x3(lib); // jspecify_nullness_not_enough_information x4(lib); // jspecify_nullness_not_enough_information x5(lib); // jspecify_nullness_mismatch x6(lib); // jspecify_nullness_not_enough_information x7(lib); x8(lib); } interface Lib {} } jspecify-1.0.0/samples/LocalVariable.java000066400000000000000000000024701464555076100203530ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class LocalVariable { interface Super { String string(); @NullnessUnspecified String stringUnspec(); @Nullable String stringUnionNull(); } abstract class Sub implements Super { void go() { String string = string(); String stringUnspec = stringUnspec(); String stringUnionNull = stringUnionNull(); synchronized (string) { } // jspecify_nullness_not_enough_information synchronized (stringUnspec) { } // jspecify_nullness_mismatch synchronized (stringUnionNull) { } } } } jspecify-1.0.0/samples/MultiBoundTypeVariableToObject.java000066400000000000000000000033241464555076100236760ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToObject { Object x0(T x) { return x; } Object x1(T x) { return x; } Object x2(T x) { return x; } Object x3(T x) { return x; } Object x4(T x) { // jspecify_nullness_not_enough_information return x; } Object x5(T x) { // jspecify_nullness_not_enough_information return x; } Object x6(T x) { return x; } Object x7(T x) { // jspecify_nullness_not_enough_information return x; } Object x8(T x) { // jspecify_nullness_mismatch return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToObjectUnionNull.java000066400000000000000000000032051464555076100255400ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToObjectUnionNull { @Nullable Object x0(T x) { return x; } @Nullable Object x1(T x) { return x; } @Nullable Object x2(T x) { return x; } @Nullable Object x3(T x) { return x; } @Nullable Object x4(T x) { return x; } @Nullable Object x5(T x) { return x; } @Nullable Object x6(T x) { return x; } @Nullable Object x7(T x) { return x; } @Nullable Object x8(T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToObjectUnspec.java000066400000000000000000000036541464555076100250620ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToObjectUnspec { @NullnessUnspecified Object x0(T x) { return x; } @NullnessUnspecified Object x1(T x) { return x; } @NullnessUnspecified Object x2(T x) { return x; } @NullnessUnspecified Object x3(T x) { return x; } @NullnessUnspecified Object x4( T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x5(T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x6(T x) { return x; } @NullnessUnspecified Object x7(T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x8(T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToOther.java000066400000000000000000000032701464555076100235510ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToOther { Lib x0(T x) { return x; } Lib x1(T x) { return x; } Lib x2(T x) { return x; } Lib x3(T x) { return x; } Lib x4(T x) { // jspecify_nullness_not_enough_information return x; } Lib x5(T x) { // jspecify_nullness_not_enough_information return x; } Lib x6(T x) { return x; } Lib x7(T x) { // jspecify_nullness_not_enough_information return x; } Lib x8(T x) { // jspecify_nullness_mismatch return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToOtherUnionNull.java000066400000000000000000000031511464555076100254130ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToOtherUnionNull { @Nullable Lib x0(T x) { return x; } @Nullable Lib x1(T x) { return x; } @Nullable Lib x2(T x) { return x; } @Nullable Lib x3(T x) { return x; } @Nullable Lib x4(T x) { return x; } @Nullable Lib x5(T x) { return x; } @Nullable Lib x6(T x) { return x; } @Nullable Lib x7(T x) { return x; } @Nullable Lib x8(T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToOtherUnspec.java000066400000000000000000000036201464555076100247260ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToOtherUnspec { @NullnessUnspecified Lib x0(T x) { return x; } @NullnessUnspecified Lib x1(T x) { return x; } @NullnessUnspecified Lib x2(T x) { return x; } @NullnessUnspecified Lib x3(T x) { return x; } @NullnessUnspecified Lib x4( T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x5(T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x6(T x) { return x; } @NullnessUnspecified Lib x7(T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x8(T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToSelf.java000066400000000000000000000027631464555076100233670ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToSelf { T x0(T x) { return x; } T x1(T x) { return x; } T x2(T x) { return x; } T x3(T x) { return x; } T x4(T x) { return x; } T x5(T x) { return x; } T x6(T x) { return x; } T x7(T x) { return x; } T x8(T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToSelfUnionNull.java000066400000000000000000000031261464555076100252250ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToSelfUnionNull { @Nullable T x0(T x) { return x; } @Nullable T x1(T x) { return x; } @Nullable T x2(T x) { return x; } @Nullable T x3(T x) { return x; } @Nullable T x4(T x) { return x; } @Nullable T x5(T x) { return x; } @Nullable T x6(T x) { return x; } @Nullable T x7(T x) { return x; } @Nullable T x8(T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableToSelfUnspec.java000066400000000000000000000032751464555076100245440ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableToSelfUnspec { @NullnessUnspecified T x0(T x) { return x; } @NullnessUnspecified T x1(T x) { return x; } @NullnessUnspecified T x2(T x) { return x; } @NullnessUnspecified T x3(T x) { return x; } @NullnessUnspecified T x4( T x) { return x; } @NullnessUnspecified T x5(T x) { return x; } @NullnessUnspecified T x6(T x) { return x; } @NullnessUnspecified T x7(T x) { return x; } @NullnessUnspecified T x8(T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToObject.java000066400000000000000000000036671464555076100255540ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToObject { Object x0(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x1(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x2(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x3(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x4(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x5(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x6(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x7(@Nullable T x) { // jspecify_nullness_mismatch return x; } Object x8(@Nullable T x) { // jspecify_nullness_mismatch return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToObjectUnionNull.java000066400000000000000000000033571464555076100274140ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToObjectUnionNull { @Nullable Object x0(@Nullable T x) { return x; } @Nullable Object x1(@Nullable T x) { return x; } @Nullable Object x2(@Nullable T x) { return x; } @Nullable Object x3(@Nullable T x) { return x; } @Nullable Object x4( @Nullable T x) { return x; } @Nullable Object x5(@Nullable T x) { return x; } @Nullable Object x6(@Nullable T x) { return x; } @Nullable Object x7(@Nullable T x) { return x; } @Nullable Object x8(@Nullable T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToObjectUnspec.java000066400000000000000000000044151464555076100267220ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToObjectUnspec { @NullnessUnspecified Object x0(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x1(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x2(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x3(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x4( @Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x5( @Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x6(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x7( @Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x8(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToOther.java000066400000000000000000000036331464555076100254200ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToOther { Lib x0(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x1(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x2(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x3(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x4(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x5(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x6(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x7(@Nullable T x) { // jspecify_nullness_mismatch return x; } Lib x8(@Nullable T x) { // jspecify_nullness_mismatch return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToOtherUnionNull.java000066400000000000000000000033231464555076100272600ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToOtherUnionNull { @Nullable Lib x0(@Nullable T x) { return x; } @Nullable Lib x1(@Nullable T x) { return x; } @Nullable Lib x2(@Nullable T x) { return x; } @Nullable Lib x3(@Nullable T x) { return x; } @Nullable Lib x4( @Nullable T x) { return x; } @Nullable Lib x5(@Nullable T x) { return x; } @Nullable Lib x6(@Nullable T x) { return x; } @Nullable Lib x7(@Nullable T x) { return x; } @Nullable Lib x8(@Nullable T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToOtherUnspec.java000066400000000000000000000043611464555076100265750ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToOtherUnspec { @NullnessUnspecified Lib x0(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x1(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x2(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x3(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x4( @Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x5( @Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x6(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x7( @Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x8(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToSelf.java000066400000000000000000000036101464555076100252230ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToSelf { T x0(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x1(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x2(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x3(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x4(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x5(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x6(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x7(@Nullable T x) { // jspecify_nullness_mismatch return x; } T x8(@Nullable T x) { // jspecify_nullness_mismatch return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToSelfUnionNull.java000066400000000000000000000032711464555076100270720ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToSelfUnionNull { @Nullable T x0(@Nullable T x) { return x; } @Nullable T x1(@Nullable T x) { return x; } @Nullable T x2(@Nullable T x) { return x; } @Nullable T x3(@Nullable T x) { return x; } @Nullable T x4(@Nullable T x) { return x; } @Nullable T x5(@Nullable T x) { return x; } @Nullable T x6(@Nullable T x) { return x; } @Nullable T x7(@Nullable T x) { return x; } @Nullable T x8(@Nullable T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnionNullToSelfUnspec.java000066400000000000000000000043201464555076100264000ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnionNullToSelfUnspec { @NullnessUnspecified T x0(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x1(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x2(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x3(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x4( @Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x5(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x6(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x7(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x8(@Nullable T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToObject.java000066400000000000000000000042161464555076100250550ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToObject { Object x0(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x1(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x2(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x3(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x4( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x5(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x6(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x7(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Object x8(@NullnessUnspecified T x) { // jspecify_nullness_mismatch return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToObjectUnionNull.java000066400000000000000000000035351464555076100267240ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToObjectUnionNull { @Nullable Object x0(@NullnessUnspecified T x) { return x; } @Nullable Object x1(@NullnessUnspecified T x) { return x; } @Nullable Object x2(@NullnessUnspecified T x) { return x; } @Nullable Object x3(@NullnessUnspecified T x) { return x; } @Nullable Object x4( @NullnessUnspecified T x) { return x; } @Nullable Object x5( @NullnessUnspecified T x) { return x; } @Nullable Object x6(@NullnessUnspecified T x) { return x; } @Nullable Object x7( @NullnessUnspecified T x) { return x; } @Nullable Object x8(@NullnessUnspecified T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToObjectUnspec.java000066400000000000000000000046021464555076100262320ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToObjectUnspec { @NullnessUnspecified Object x0(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x1( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x2(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x3( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x4( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x5( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x6(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x7( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x8( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToOther.java000066400000000000000000000041621464555076100247300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToOther { Lib x0(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x1(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x2(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x3(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x4( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x5(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x6(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x7(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } Lib x8(@NullnessUnspecified T x) { // jspecify_nullness_mismatch return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToOtherUnionNull.java000066400000000000000000000035011464555076100265700ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToOtherUnionNull { @Nullable Lib x0(@NullnessUnspecified T x) { return x; } @Nullable Lib x1(@NullnessUnspecified T x) { return x; } @Nullable Lib x2(@NullnessUnspecified T x) { return x; } @Nullable Lib x3(@NullnessUnspecified T x) { return x; } @Nullable Lib x4( @NullnessUnspecified T x) { return x; } @Nullable Lib x5( @NullnessUnspecified T x) { return x; } @Nullable Lib x6(@NullnessUnspecified T x) { return x; } @Nullable Lib x7( @NullnessUnspecified T x) { return x; } @Nullable Lib x8(@NullnessUnspecified T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToOtherUnspec.java000066400000000000000000000045461464555076100261140ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToOtherUnspec { @NullnessUnspecified Lib x0(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x1( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x2(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x3( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x4( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x5( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x6(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x7( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x8( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToSelf.java000066400000000000000000000041551464555076100245420ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToSelf { T x0(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x1(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x2(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x3(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x4( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x5(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x6(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x7(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } T x8(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToSelfUnionNull.java000066400000000000000000000034401464555076100264020ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToSelfUnionNull { @Nullable T x0(@NullnessUnspecified T x) { return x; } @Nullable T x1(@NullnessUnspecified T x) { return x; } @Nullable T x2(@NullnessUnspecified T x) { return x; } @Nullable T x3(@NullnessUnspecified T x) { return x; } @Nullable T x4( @NullnessUnspecified T x) { return x; } @Nullable T x5(@NullnessUnspecified T x) { return x; } @Nullable T x6(@NullnessUnspecified T x) { return x; } @Nullable T x7(@NullnessUnspecified T x) { return x; } @Nullable T x8(@NullnessUnspecified T x) { return x; } interface Lib {} } jspecify-1.0.0/samples/MultiBoundTypeVariableUnspecToSelfUnspec.java000066400000000000000000000045141464555076100257170ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiBoundTypeVariableUnspecToSelfUnspec { @NullnessUnspecified T x0(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x1( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x2(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x3( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x4( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x5( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x6(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x7( @NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified T x8(@NullnessUnspecified T x) { // jspecify_nullness_not_enough_information return x; } interface Lib {} } jspecify-1.0.0/samples/MultiplePathsToTypeVariable.java000066400000000000000000000036561464555076100232700ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class MultiplePathsToTypeVariable { interface TBounded { U get(); } interface TUnspecBounded { U get(); } interface TUnionNullBounded { U get(); } Object x0(TBounded t) { return t.get(); } Object x1(TBounded t) { return t.get(); } Object x2(TBounded t) { return t.get(); } Object x3(TUnspecBounded t) { return t.get(); } Object x4(TUnspecBounded t) { // jspecify_nullness_not_enough_information return t.get(); } Object x5(TUnspecBounded t) { // jspecify_nullness_not_enough_information return t.get(); } Object x6(TUnionNullBounded t) { return t.get(); } Object x7(TUnionNullBounded t) { // jspecify_nullness_not_enough_information return t.get(); } Object x8(TUnionNullBounded t) { // jspecify_nullness_mismatch return t.get(); } } jspecify-1.0.0/samples/NoPathToTypeVariableMinusNull.java000066400000000000000000000017341464555076100235300ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; class NoPathToTypeVariableMinusNull { @NullMarked interface Super { void accept(E e); } // jspecify_nullness_not_enough_information abstract class Sub implements Super { @NullMarked class Foo { void go(E e) { // jspecify_nullness_not_enough_information accept(e); } } } } jspecify-1.0.0/samples/NonConstantPrimitives.java000066400000000000000000000014621464555076100221730ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; @NullMarked class NonConstantPrimitives { Object x0(int i) { return i; } Object x1(char c) { return c; } Object x2(boolean b) { return b; } } jspecify-1.0.0/samples/NonNullProjection.java000066400000000000000000000016461464555076100213010ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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 org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class NonNullProjection { Object parametric(T t) { // jspecify_nullness_mismatch return t; } Object projected(@NonNull T t) { return t; } } jspecify-1.0.0/samples/NonNullSimple.java000066400000000000000000000014611464555076100204110ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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 org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; class NonNullSimple { @NonNull Object passthrough(@Nullable Object o) { // jspecify_nullness_mismatch return o; } } jspecify-1.0.0/samples/NotNullMarkedAnnotatedInnerOfNonParameterized.java000066400000000000000000000037331464555076100267040ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; abstract class NotNullMarkedAnnotatedInnerOfNonParameterized { interface Lib {} class Nested { class DoublyNested {} } void foo( @Nullable Nested x4, // jspecify_nullness_intrinsically_not_nullable @Nullable NotNullMarkedAnnotatedInnerOfNonParameterized.Nested x5, NotNullMarkedAnnotatedInnerOfNonParameterized.@Nullable Nested x6, // jspecify_nullness_intrinsically_not_nullable @Nullable NotNullMarkedAnnotatedInnerOfNonParameterized.Nested.DoublyNested x7, // jspecify_nullness_intrinsically_not_nullable NotNullMarkedAnnotatedInnerOfNonParameterized.@Nullable Nested.DoublyNested x8, NotNullMarkedAnnotatedInnerOfNonParameterized.Nested.@Nullable DoublyNested x9, // jspecify_nullness_intrinsically_not_nullable Lib<@Nullable NotNullMarkedAnnotatedInnerOfNonParameterized.Nested.DoublyNested> l1, // jspecify_nullness_intrinsically_not_nullable Lib l2, Lib l3) {} Nested.DoublyNested create(Nested n) { return n.new DoublyNested(); } // jspecify_nullness_intrinsically_not_nullable abstract @Nullable NotNullMarkedAnnotatedInnerOfNonParameterized.Nested returnType(); } jspecify-1.0.0/samples/NotNullMarkedAnnotatedInnerOfParameterized.java000066400000000000000000000037331464555076100262310ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; abstract class NotNullMarkedAnnotatedInnerOfParameterized { interface Lib {} class Nested { class DoublyNested {} } void foo( @Nullable Nested x4, // jspecify_nullness_intrinsically_not_nullable @Nullable NotNullMarkedAnnotatedInnerOfParameterized.Nested x5, NotNullMarkedAnnotatedInnerOfParameterized.@Nullable Nested x6, // jspecify_nullness_intrinsically_not_nullable @Nullable NotNullMarkedAnnotatedInnerOfParameterized.Nested.DoublyNested x7, // jspecify_nullness_intrinsically_not_nullable NotNullMarkedAnnotatedInnerOfParameterized.@Nullable Nested.DoublyNested x8, NotNullMarkedAnnotatedInnerOfParameterized.Nested.@Nullable DoublyNested x9, // jspecify_nullness_intrinsically_not_nullable Lib<@Nullable NotNullMarkedAnnotatedInnerOfParameterized.Nested.DoublyNested> l1, // jspecify_nullness_intrinsically_not_nullable Lib.@Nullable Nested.DoublyNested> l2, Lib.Nested.DoublyNested> l3) {} Nested.DoublyNested create(Nested n) { return n.new DoublyNested(); } // jspecify_nullness_intrinsically_not_nullable abstract @Nullable NotNullMarkedAnnotatedInnerOfParameterized.Nested returnType(); } jspecify-1.0.0/samples/NotNullMarkedAnnotatedTypeParameter.java000066400000000000000000000021061464555076100247270ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; // Covered by // conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/notnullmarked/AnnotatedTypeParameters.java class NotNullMarkedAnnotatedTypeParameter { // jspecify_unrecognized_location interface Lib1<@Nullable T> {} // jspecify_unrecognized_location interface Lib2<@Nullable T extends Object> {} // jspecify_unrecognized_location interface Lib3<@Nullable T extends @Nullable Object> {} } jspecify-1.0.0/samples/NotNullMarkedAnnotatedTypeParameterUnspec.java000066400000000000000000000020131464555076100261020ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedAnnotatedTypeParameterUnspec { // jspecify_unrecognized_location interface Lib1<@NullnessUnspecified T> {} // jspecify_unrecognized_location interface Lib2<@NullnessUnspecified T extends Object> {} // jspecify_unrecognized_location interface Lib3<@NullnessUnspecified T extends @Nullable Object> {} } jspecify-1.0.0/samples/NotNullMarkedAnnotatedWildcard.java000066400000000000000000000024411464555076100237000ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; // Covered by // conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/notnullmarked/AnnotatedWildcards.java class NotNullMarkedAnnotatedWildcard { interface Lib {} void foo( // jspecify_unrecognized_location Lib<@Nullable ?> x1, // jspecify_unrecognized_location Lib<@Nullable ? extends Object> x2, // jspecify_unrecognized_location Lib<@Nullable ? super Object> x3, // jspecify_unrecognized_location Lib<@Nullable ? extends @Nullable Object> x4, // jspecify_unrecognized_location Lib<@Nullable ? super @Nullable Object> x5) {} } jspecify-1.0.0/samples/NotNullMarkedAnnotatedWildcardUnspec.java000066400000000000000000000024011464555076100250520ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedAnnotatedWildcardUnspec { interface Lib {} void foo( // jspecify_unrecognized_location Lib<@NullnessUnspecified ?> x1, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? extends Object> x2, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? super Object> x3, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? extends @Nullable Object> x4, // jspecify_unrecognized_location Lib<@NullnessUnspecified ? super @Nullable Object> x5) {} } jspecify-1.0.0/samples/NotNullMarkedClassToSelf.java000066400000000000000000000031241464555076100224720ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedClassToSelf { Lib x0(Lib x) { // jspecify_nullness_not_enough_information return x; } Lib x1(@NullnessUnspecified Lib x) { // jspecify_nullness_not_enough_information return x; } Lib x2(@Nullable Lib x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x3(Lib x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x4(@NullnessUnspecified Lib x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Lib x5(@Nullable Lib x) { // jspecify_nullness_not_enough_information return x; } @Nullable Lib x6(Lib x) { return x; } @Nullable Lib x7(@NullnessUnspecified Lib x) { return x; } @Nullable Lib x8(@Nullable Lib x) { return x; } @NullMarked interface Lib {} } jspecify-1.0.0/samples/NotNullMarkedConcatResult.java000066400000000000000000000017441464555076100227240ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedConcatResult { String constant() { return "a" + "b"; } String variable(Object o) { return "a" + o; } String variableUnspec(@NullnessUnspecified Object o) { return "a" + o; } String variableUnionNull(@Nullable Object o) { return "a" + o; } } jspecify-1.0.0/samples/NotNullMarkedContainmentExtends.java000066400000000000000000000035531464555076100241300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedContainmentExtends { void x() { // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); new Check, Lib>(); new Check, Lib>(); } interface Lib {} interface Foo {} static class Check {} } jspecify-1.0.0/samples/NotNullMarkedContainmentSuper.java000066400000000000000000000035051464555076100236110ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedContainmentSuper { void x() { // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); } interface Lib {} interface Foo {} static class Check {} } jspecify-1.0.0/samples/NotNullMarkedContainmentSuperVsExtends.java000066400000000000000000000024321464555076100254530ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedContainmentSuperVsExtends { void x() { // jspecify_nullness_not_enough_information new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); new Check, Lib>(); // jspecify_nullness_not_enough_information new Check, Lib>(); } interface Lib {} interface Foo {} static class Check {} } jspecify-1.0.0/samples/NotNullMarkedIfCondition.java000066400000000000000000000022731464555076100225210ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; abstract class NotNullMarkedIfCondition { abstract int i(); abstract int j(); abstract boolean b(); abstract Boolean boxed(); abstract @NullnessUnspecified Boolean boxedUnspec(); abstract @Nullable Boolean boxedUnionNull(); void go() { if (i() == j()) {} if (b()) {} // jspecify_nullness_not_enough_information if (boxed()) {} // jspecify_nullness_not_enough_information if (boxedUnspec()) {} // jspecify_nullness_mismatch if (boxedUnionNull()) {} } } jspecify-1.0.0/samples/NotNullMarkedInferenceChoosesNullableTypeVariable.java000066400000000000000000000016701464555076100275250ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; class NotNullMarkedInferenceChoosesNullableTypeVariable { @NullMarked interface Super { void consume(T t); } abstract class Sub implements Super { void go(@Nullable E value) { consume(value); } } } jspecify-1.0.0/samples/NotNullMarkedLocalVariable.java000066400000000000000000000025071464555076100230140ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; abstract class NotNullMarkedLocalVariable { @NullMarked interface Super { String string(); @NullnessUnspecified String stringUnspec(); @Nullable String stringUnionNull(); } abstract class Sub implements Super { void go() { String string = string(); String stringUnspec = stringUnspec(); String stringUnionNull = stringUnionNull(); synchronized (string) { } // jspecify_nullness_not_enough_information synchronized (stringUnspec) { } // jspecify_nullness_mismatch synchronized (stringUnionNull) { } } } } jspecify-1.0.0/samples/NotNullMarkedOverrides.java000066400000000000000000000034201464555076100222510ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedOverrides { interface Super { Object makeObject(); @NullnessUnspecified Object makeObjectUnspec(); @Nullable Object makeObjectUnionNull(); } interface SubObject extends Super { @Override // jspecify_nullness_not_enough_information Object makeObject(); @Override // jspecify_nullness_not_enough_information Object makeObjectUnspec(); @Override Object makeObjectUnionNull(); } interface SubObjectUnspec extends Super { @Override // jspecify_nullness_not_enough_information @NullnessUnspecified Object makeObject(); @Override // jspecify_nullness_not_enough_information @NullnessUnspecified Object makeObjectUnspec(); @Override @NullnessUnspecified Object makeObjectUnionNull(); } interface SubObjectUnionNull extends Super { @Override // jspecify_nullness_not_enough_information @Nullable Object makeObject(); @Override // jspecify_nullness_not_enough_information @Nullable Object makeObjectUnspec(); @Override @Nullable Object makeObjectUnionNull(); } } jspecify-1.0.0/samples/NotNullMarkedTypeVariableBound.java000066400000000000000000000034051464555076100236710ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedTypeVariableBound { class UnspecBounded1 { @NullMarked abstract class Nested { abstract T get(); } } class UnspecBounded2 { @NullMarked abstract class Nested { abstract T get(); } } class UnspecBounded3 { @NullMarked abstract class Nested { abstract T get(); } } class NullBounded { @NullMarked abstract class Nested { abstract T get(); } } @NullMarked class Callers { Object x0(UnspecBounded1.Nested x) { // jspecify_nullness_not_enough_information return x.get(); } Object x0(UnspecBounded2.Nested x) { // jspecify_nullness_not_enough_information return x.get(); } Object x0(UnspecBounded3.Nested x) { // jspecify_nullness_not_enough_information return x.get(); } Object x0(NullBounded.Nested x) { // jspecify_nullness_mismatch return x.get(); } } } jspecify-1.0.0/samples/NotNullMarkedUnboxing.java000066400000000000000000000027141464555076100221050ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedUnboxing { @NullMarked interface Super { Integer getInteger(); @NullnessUnspecified Integer getIntegerUnspec(); @Nullable Integer getIntegerUnionNull(); } abstract class Sub implements Super { int x0() { return getInteger(); } int x1() { // jspecify_nullness_not_enough_information return getIntegerUnspec(); } int x2() { // jspecify_nullness_mismatch return getIntegerUnionNull(); } long x3() { return getInteger(); } long x4() { // jspecify_nullness_not_enough_information return getIntegerUnspec(); } long x5() { // jspecify_nullness_mismatch return getIntegerUnionNull(); } } } jspecify-1.0.0/samples/NotNullMarkedUseOfTypeVariable.java000066400000000000000000000043401464555076100236420ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedUseOfTypeVariable { interface Super { T get(); } @NullMarked interface SubObject extends Super {} @NullMarked interface SubObjectUnspec extends Super<@NullnessUnspecified Object> {} @NullMarked interface SubObjectUnionNull extends Super<@Nullable Object> {} @NullMarked class Caller { Object x0(SubObject s) { // jspecify_nullness_not_enough_information return s.get(); } Object x1(SubObjectUnspec s) { // jspecify_nullness_not_enough_information return s.get(); } Object x2(SubObjectUnionNull s) { // jspecify_nullness_mismatch return s.get(); } Object x3(Super s) { // jspecify_nullness_not_enough_information return s.get(); } Object x4(Super<@NullnessUnspecified Object> s) { // jspecify_nullness_not_enough_information return s.get(); } Object x5(Super<@Nullable Object> s) { // jspecify_nullness_mismatch return s.get(); } Object x6(Super s) { // jspecify_nullness_not_enough_information return s.get(); } Object x7(Super s) { // jspecify_nullness_not_enough_information return s.get(); } Object x8(Super s) { // jspecify_nullness_mismatch return s.get(); } Object x9(Super s) { // jspecify_nullness_mismatch return s.get(); } } } jspecify-1.0.0/samples/NotNullMarkedUseOfTypeVariableAsTypeArgument.java000066400000000000000000000050531464555076100264750ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedUseOfTypeVariableAsTypeArgument { @NullMarked interface Lib {} interface Super { Lib get(); } @NullMarked interface SubObject extends Super {} @NullMarked interface SubObjectUnspec extends Super<@NullnessUnspecified Object> {} @NullMarked interface SubObjectUnionNull extends Super<@Nullable Object> {} @NullMarked class Caller { @Nullable Lib x0(SubObject s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x1(SubObjectUnspec s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x2(SubObjectUnionNull s) { // jspecify_nullness_mismatch return s.get(); } @Nullable Lib x3(Super s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x4(Super<@NullnessUnspecified Object> s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x5(Super<@Nullable Object> s) { // jspecify_nullness_mismatch return s.get(); } @Nullable Lib x6(Super s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x7(Super s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x8(Super s) { // jspecify_nullness_mismatch return s.get(); } @Nullable Lib x9(Super s) { // jspecify_nullness_mismatch return s.get(); } } } jspecify-1.0.0/samples/NotNullMarkedUseOfWildcardAsTypeArgument.java000066400000000000000000000025271464555076100256420ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; class NotNullMarkedUseOfWildcardAsTypeArgument { @NullMarked interface Lib {} interface Super { Lib get(); } @NullMarked class Caller { @Nullable Lib x0(Super s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x1(Super s) { // jspecify_nullness_not_enough_information return s.get(); } @Nullable Lib x2(Super s) { return s.get(); } @Nullable Lib x3(Super s) { return s.get(); } } } jspecify-1.0.0/samples/NullCheck.java000066400000000000000000000026741464555076100175310ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullCheck { // TODO(cpovirk): Soften README to permit flow-sensitive samples in moderation. Object x1(@NullnessUnspecified Object o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x2(@Nullable Object o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x4(@NullnessUnspecified Object o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } Object x5(@Nullable Object o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } } jspecify-1.0.0/samples/NullCheckTypeVariable.java000066400000000000000000000025451464555076100220360ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullCheckTypeVariable { Object x1(@NullnessUnspecified T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x2(@Nullable T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x4(@NullnessUnspecified T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } Object x5(@Nullable T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } } jspecify-1.0.0/samples/NullCheckTypeVariableUnionNullBound.java000066400000000000000000000032241464555076100246650ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullCheckTypeVariableUnionNullBound { Object x0(T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x1(@NullnessUnspecified T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x2(@Nullable T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x3(T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } Object x4(@NullnessUnspecified T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } Object x5(@Nullable T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } } jspecify-1.0.0/samples/NullCheckTypeVariableUnspecBound.java000066400000000000000000000032341464555076100242000ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullCheckTypeVariableUnspecBound { Object x0(T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x1(@NullnessUnspecified T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x2(@Nullable T o) { if (o != null) { return o; } else { // jspecify_nullness_mismatch return o; } } Object x3(T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } Object x4(@NullnessUnspecified T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } Object x5(@Nullable T o) { if (o == null) { // jspecify_nullness_mismatch return o; } else { return o; } } } jspecify-1.0.0/samples/NullLiteralToClass.java000066400000000000000000000017641464555076100214000ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullLiteralToClass { Object x0() { // jspecify_nullness_mismatch return null; } @NullnessUnspecified Object x1() { // jspecify_nullness_not_enough_information return null; } @Nullable Object x2() { return null; } } jspecify-1.0.0/samples/NullLiteralToTypeVariable.java000066400000000000000000000055241464555076100227200ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullLiteralToTypeVariable< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Never1T x0() { // jspecify_nullness_mismatch return null; } ChildOfNever1T x1() { // jspecify_nullness_mismatch return null; } UnspecChildOfNever1T x2() { // jspecify_nullness_mismatch return null; } NullChildOfNever1T x3() { // jspecify_nullness_mismatch return null; } Never2T x4() { // jspecify_nullness_mismatch return null; } ChildOfNever2T x5() { // jspecify_nullness_mismatch return null; } UnspecChildOfNever2T x6() { // jspecify_nullness_mismatch return null; } NullChildOfNever2T x7() { // jspecify_nullness_mismatch return null; } UnspecT x8() { // jspecify_nullness_mismatch return null; } ChildOfUnspecT x9() { // jspecify_nullness_mismatch return null; } UnspecChildOfUnspecT x10() { // jspecify_nullness_mismatch return null; } NullChildOfUnspecT x11() { // jspecify_nullness_mismatch return null; } ParametricT x12() { // jspecify_nullness_mismatch return null; } ChildOfParametricT x13() { // jspecify_nullness_mismatch return null; } UnspecChildOfParametricT x14() { // jspecify_nullness_mismatch return null; } NullChildOfParametricT x15() { // jspecify_nullness_mismatch return null; } } jspecify-1.0.0/samples/NullLiteralToTypeVariableUnionNull.java000066400000000000000000000047351464555076100245670ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullLiteralToTypeVariableUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Never1T x0() { return null; } @Nullable ChildOfNever1T x1() { return null; } @Nullable UnspecChildOfNever1T x2() { return null; } @Nullable NullChildOfNever1T x3() { return null; } @Nullable Never2T x4() { return null; } @Nullable ChildOfNever2T x5() { return null; } @Nullable UnspecChildOfNever2T x6() { return null; } @Nullable NullChildOfNever2T x7() { return null; } @Nullable UnspecT x8() { return null; } @Nullable ChildOfUnspecT x9() { return null; } @Nullable UnspecChildOfUnspecT x10() { return null; } @Nullable NullChildOfUnspecT x11() { return null; } @Nullable ParametricT x12() { return null; } @Nullable ChildOfParametricT x13() { return null; } @Nullable UnspecChildOfParametricT x14() { return null; } @Nullable NullChildOfParametricT x15() { return null; } } jspecify-1.0.0/samples/NullLiteralToTypeVariableUnspec.java000066400000000000000000000066121464555076100240750ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class NullLiteralToTypeVariableUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Never1T x0() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified ChildOfNever1T x1() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified UnspecChildOfNever1T x2() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified NullChildOfNever1T x3() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified Never2T x4() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified ChildOfNever2T x5() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified UnspecChildOfNever2T x6() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified NullChildOfNever2T x7() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified UnspecT x8() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified ChildOfUnspecT x9() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified UnspecChildOfUnspecT x10() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified NullChildOfUnspecT x11() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified ParametricT x12() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified ChildOfParametricT x13() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified UnspecChildOfParametricT x14() { // jspecify_nullness_not_enough_information return null; } @NullnessUnspecified NullChildOfParametricT x15() { // jspecify_nullness_not_enough_information return null; } } jspecify-1.0.0/samples/NullMarkedDirectUseOfNotNullMarkedBoundedTypeVariable.java000066400000000000000000000024771464555076100302660ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullnessUnspecified; interface NullMarkedDirectUseOfNotNullMarkedBoundedTypeVariable { class UnspecBounded1 { @NullMarked class Inner { Object x0(T t) { // jspecify_nullness_not_enough_information return t; } } } class UnspecBounded2 { @NullMarked class Inner { Object x0(T t) { // jspecify_nullness_not_enough_information return t; } } } class UnspecBounded3 { @NullMarked class Inner { Object x0(T t) { // jspecify_nullness_not_enough_information return t; } } } } jspecify-1.0.0/samples/NullUnmarkedUndoesNullMarked.java000066400000000000000000000016261464555076100234130ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullUnmarked; @NullMarked interface NullUnmarkedUndoesNullMarked { @NullUnmarked default void acceptUnspecObject(Object o) { // jspecify_nullness_not_enough_information acceptObject(o); } void acceptObject(Object o); } jspecify-1.0.0/samples/NullUnmarkedUndoesNullMarkedForWildcards.java000066400000000000000000000020351464555076100257120ustar00rootroot00000000000000/* * Copyright 2023 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullUnmarked; import org.jspecify.annotations.Nullable; @NullMarked interface NullUnmarkedUndoesNullMarkedForWildcards { @NullUnmarked default void apply(Supplier supplier) { // jspecify_nullness_not_enough_information acceptObject(supplier.get()); } void acceptObject(Object o); interface Supplier { T get(); } } jspecify-1.0.0/samples/NullnessDoesNotAffectOverloadSelection.java000066400000000000000000000016061464555076100254250ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked interface NullnessDoesNotAffectOverloadSelection { default void x(@Nullable String s) { // jspecify_nullness_mismatch use(s); } void use(String s); void use(@Nullable Object o); } jspecify-1.0.0/samples/ObjectAsSuperOfTypeVariable.java000066400000000000000000000021761464555076100231640ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class ObjectAsSuperOfTypeVariable { interface Supplier { T get(); } interface Receiver { void accept(T t); } void pass(Supplier s, Receiver r) { r.accept(s.get()); } void passToAllPurposeReceiver(Supplier s, Receiver r) { // jspecify_nullness_mismatch pass(s, r); } } jspecify-1.0.0/samples/OutOfBoundsTypeVariable.java000066400000000000000000000017231464555076100223720ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class OutOfBoundsTypeVariable { interface User { // jspecify_nullness_mismatch Lib get(); } interface Foo {} interface Lib { T get(); } Object go(User user) { return user.get(); } } jspecify-1.0.0/samples/OverrideParameters.java000066400000000000000000000044431464555076100214600ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; /* * For the moment, we don't require support for parameter contravariance: * https://github.com/jspecify/jspecify/issues/49 * * (If we change that, we should revise our samples README to explain that this is a case in which * we deviate from JLS rules: * https://github.com/jspecify/jspecify/blob/e55eb43f3bc1e7493b8b28a9dadd2b9b254e3335/samples/README.md#what-sample-inputs-demonstrate) */ @NullMarked class OverrideParameters { interface Super { void useObject(Object o); void useObjectUnspec(@NullnessUnspecified Object o); void useObjectUnionNull(@Nullable Object o); } interface SubObject extends Super { @Override void useObject(Object o); @Override // jspecify_nullness_not_enough_information void useObjectUnspec(Object o); @Override // jspecify_nullness_mismatch void useObjectUnionNull(Object o); } interface SubObjectUnspec extends Super { @Override // jspecify_nullness_not_enough_information void useObject(@NullnessUnspecified Object o); @Override // jspecify_nullness_not_enough_information void useObjectUnspec(@NullnessUnspecified Object o); @Override // jspecify_nullness_not_enough_information void useObjectUnionNull(@NullnessUnspecified Object o); } interface SubObjectUnionNull extends Super { @Override // jspecify_nullness_mismatch void useObject(@Nullable Object o); @Override // jspecify_nullness_not_enough_information void useObjectUnspec(@Nullable Object o); @Override void useObjectUnionNull(@Nullable Object o); } } jspecify-1.0.0/samples/OverrideParametersThatAreTypeVariables.java000066400000000000000000000025771464555076100254320ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class OverrideParametersThatAreTypeVariables { interface Super { void useE(E e); void useF(F f); void useLibE(Lib e); void useLibF(Lib f); void useArrayOfE(E[] e); void useArrayOfF(F[] f); } interface Sub extends Super { @Override void useE(T e); @Override void useF(U f); @Override void useLibE(Lib e); @Override void useLibF(Lib f); @Override void useArrayOfE(T[] e); @Override void useArrayOfF(U[] f); } interface Lib {} } jspecify-1.0.0/samples/OverrideReturns.java000066400000000000000000000033231464555076100210130ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class OverrideReturns { interface Super { Object makeObject(); @NullnessUnspecified Object makeObjectUnspec(); @Nullable Object makeObjectUnionNull(); } interface SubObject extends Super { @Override Object makeObject(); @Override Object makeObjectUnspec(); @Override Object makeObjectUnionNull(); } interface SubObjectUnspec extends Super { @Override // jspecify_nullness_not_enough_information @NullnessUnspecified Object makeObject(); @Override // jspecify_nullness_not_enough_information @NullnessUnspecified Object makeObjectUnspec(); @Override @NullnessUnspecified Object makeObjectUnionNull(); } interface SubObjectUnionNull extends Super { @Override // jspecify_nullness_mismatch @Nullable Object makeObject(); @Override // jspecify_nullness_not_enough_information @Nullable Object makeObjectUnspec(); @Override @Nullable Object makeObjectUnionNull(); } } jspecify-1.0.0/samples/ParameterizedWithTypeVariableArgumentToSelf.java000066400000000000000000000014561464555076100264360ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; @NullMarked interface ParameterizedWithTypeVariableArgumentToSelf { default Lib get() { return doGet(); } Lib doGet(); interface Lib {} } jspecify-1.0.0/samples/PrimitiveAnnotations.java000066400000000000000000000022721464555076100220410ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class PrimitiveAnnotations { void foo( // jspecify_nullness_intrinsically_not_nullable @Nullable int x1, // jspecify_nullness_intrinsically_not_nullable @Nullable int[] x2, int x3, int[] x4, int @Nullable [] x5, // jspecify_nullness_intrinsically_not_nullable Lib<@Nullable int[]> x6, Lib x7, // jspecify_nullness_intrinsically_not_nullable @Nullable int[][] x8) {} class Lib {} } jspecify-1.0.0/samples/PrimitiveAnnotationsUnspec.java000066400000000000000000000023311464555076100232130ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class PrimitiveAnnotationsUnspec { void foo( // jspecify_nullness_intrinsically_not_nullable @NullnessUnspecified int x1, // jspecify_nullness_intrinsically_not_nullable @NullnessUnspecified int[] x2, int x3, int[] x4, int @NullnessUnspecified [] x5, // jspecify_nullness_intrinsically_not_nullable Lib<@NullnessUnspecified int[]> x6, Lib x7) {} class Lib {} } jspecify-1.0.0/samples/README.md000066400000000000000000000166731464555076100163010ustar00rootroot00000000000000# Sample inputs Currently, the main purpose of these samples is to act as a source of test cases for authors of nullness checkers that wish to use JSpecify nullness information. ## Disclaimers These sample inputs are informative, not normative. They use annotations whose names and meanings are not finalized. Notably, they currently use an explicit `@NullnessUnspecified` annotation, even though that annotation was not part of our 0.1 milestone and will quite possibly not be part of our 1.0 release. (Still, we haven't yet removed the `@NullnessUnspecified` usages: First, we're not yet certain whether we'll include that annotation or not. Second, the annotation provides an easier way to demonstrate rules that can arise without it but are easier to demonstrate with it. We probably wouldn't write such samples if we were starting from scratch today, but we wrote them when we started, and they appear to provide some value on net.) They have mostly not been code reviewed. We do not know if this is even the format that we want our sample inputs to be in. Whatever our final samples look like, we do **not** expect to present them as "conformance tests" that require any behavior from tools: - JSpecify nullness information may be of use to many kinds of tools, not just "nullness checkers." But these samples are written in a way that makes them most useful to authors of nullness checkers. Authors of other tools -- those that render API descriptions, generate source code, perform refactorings, etc. -- are not best served by the samples' focus on `jspecify_nullness_mismatch`, etc. - The goal of JSpecify is to provide one source of nullness information. Tools may use some, all, or none of that information. They may also use information from other sources. - Some examples of "information from other sources": - looking at the *implementation* of a method to decide whether it can return `null` - looking at non-JSpecify nullness annotations in code - looking at "overlay" or "stub" information about nullness for well-known APIs - looking at whether the parameter to a call to `Map.get` is known to be present in that map - defining a rule to treat all unannotated type usages the same, when the JSpecify rules give some of them "unspecified nullness" - Based on the information they have available for any given piece of code, tools always have the option to issue a warning / error / other diagnostic for that code, and they always have the option not to. (Even for a tool that uses *all* JSpecify information and *only* JSpecify information, that information is, at its heart, *information* for tools to apply as their authors see fit.) ## Syntax A special comment on a given line of a `.java` file provides information about the following line. The first three special comments indicate that JSpecify annotations are applied in ways that are [unrecognized](http://jspecify.org/spec#recognized-locations-type-use). Tools are likely to report an error in the case of the first two, somewhat less likely to report an error in the case of the third (since they might choose to give their meaning to annotations there), and not *obligated* to do anything for any of the cases: - `jspecify_conflicting_annotations`: for cases like `@Nullable @NullnessUnspecified Foo` - `jspecify_nullness_intrinsically_not_nullable`: for cases like `@Nullable int` - `jspecify_unrecognized_location`: for the other cases in which JSpecify does not give meaning to an annotation, like `class @Nullable Foo {}`. The last two comments indicate a nullness violation: an inconsistency between two annotations, or between annotations and source code. You can think of these as extending the normal JLS type rules to cover types that have been augmented with nullness information. (For example, the value of a `return` statement must be convertible to the method's return type, and the receiver in a method call should not be `@Nullable`.) Nullness checkers are likely to report an error for each `jspecify_nullness_mismatch` comment, are likely to make many different decisions in whether to issues a diagnostic (error, warning, or no diagnostic) for any particular `jspecify_nullness_not_enough_information` comment, and are not *obligated* to do anything for any particular comment. (For some background on that, see the disclaimers above. Also, note that a nullness checker can be sound even if it does not issue errors for some cases of `jspecify_nullness_mismatch` or `jspecify_nullness_not_enough_information`!) - `jspecify_nullness_mismatch` - `jspecify_nullness_not_enough_information`: for nullness violations that involve [unspecified nullness](https://docs.google.com/document/d/1KQrBxwaVIPIac_6SCf--w-vZBeHkTvtaqPSU_icIccc/edit#bookmark=id.xb9w6p3ilsq3). TODO: Consider additional features: - multiline comments - other locations for comments - multiple findings per line/comment - comments that apply to larger ranges -- possibly to syntax elements (like statements) rather than lines - comments that apply only to a particular part of the line ## Directory structure See [JSpecify: test-data format: Directory structure](https://docs.google.com/document/d/1JVH2p61kReO8bW4AKnbkpybPYlUulVmyNrR1WRIEE_k/edit#bookmark=id.2t1r58i5a03s). TODO(#134): Inline that here if Tagir can sign the CLA and contribute it. Additionally: Fully qualified class names must be unique across all directories. > This permits all files to be compiled in a single tool invocation. TODO: Consider requiring that all individual-file samples be in the top-level directory. Each file must contain a single top-level class. TODO(#133): Consider relaxing this. TODO: Consider requiring a file's path to match its package and class: - individual-file samples: `Foo.java` for `Foo` - full-directory samples: `sampleFoo/Foo.java` for `Foo`, `sampleFoo/bar/Foo.java` for `bar.Foo` - We may need additional accommodations for JPMS support to demonstrate module-level defaulting. ## Restrictions Files must be UTF-8 encoded. Files must contain only printable ASCII characters and `\n`. Files must be compatible with Java 8. TODO(#131): Decide how to label files that require a higher version so that we can allow them. (But still encourage sticking to Java 8 except for tests that specifically exercise newer features.) Files must compile without error using stock javac. Files must not depend on any classes other than the JSpecify annotations. This includes the Java platform APIs. Exception: Files may use `java.lang.Object`, but they still must not use its methods. > For example, files may use `Object` as a bound, parameter, or return type. Files should avoid depending on the presence of absence of "smart" checker features, such as: - looking inside the body of a method to determine what parameters it dereferences or what it returns - To that end, prefer abstract methods when practical. - flow-sensitive typing We also encourage writing files that demonstrate individual behaviors in isolation. For example, we encourage writing files to minimize how much they rely on type inference -- except, of course, for any files explicitly intended to demonstrate type inference. ## More TODOs TODO: Consider how to map between samples and related GitHub issues (comments, filenames?). jspecify-1.0.0/samples/SameTypeObject.java000066400000000000000000000034101464555076100205240ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SameTypeObject { Lib x0(Lib x) { return x; } Lib x1(Lib<@NullnessUnspecified Object> x) { // jspecify_nullness_not_enough_information return x; } Lib x2(Lib<@Nullable Object> x) { // jspecify_nullness_mismatch return x; } Lib<@NullnessUnspecified Object> x3(Lib x) { // jspecify_nullness_not_enough_information return x; } Lib<@NullnessUnspecified Object> x4(Lib<@NullnessUnspecified Object> x) { // jspecify_nullness_not_enough_information return x; } Lib<@NullnessUnspecified Object> x5(Lib<@Nullable Object> x) { // jspecify_nullness_not_enough_information return x; } Lib<@Nullable Object> x6(Lib x) { // jspecify_nullness_mismatch return x; } Lib<@Nullable Object> x7(Lib<@NullnessUnspecified Object> x) { // jspecify_nullness_not_enough_information return x; } Lib<@Nullable Object> x8(Lib<@Nullable Object> x) { return x; } interface Lib {} } jspecify-1.0.0/samples/SameTypeTypeVariable.java000066400000000000000000000033201464555076100217050ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SameTypeTypeVariable { Lib x0(Lib x) { return x; } Lib x1(Lib<@NullnessUnspecified T> x) { // jspecify_nullness_not_enough_information return x; } Lib x2(Lib<@Nullable T> x) { // jspecify_nullness_mismatch return x; } Lib<@NullnessUnspecified T> x3(Lib x) { // jspecify_nullness_not_enough_information return x; } Lib<@NullnessUnspecified T> x4(Lib<@NullnessUnspecified T> x) { // jspecify_nullness_not_enough_information return x; } Lib<@NullnessUnspecified T> x5(Lib<@Nullable T> x) { // jspecify_nullness_not_enough_information return x; } Lib<@Nullable T> x6(Lib x) { // jspecify_nullness_mismatch return x; } Lib<@Nullable T> x7(Lib<@NullnessUnspecified T> x) { // jspecify_nullness_not_enough_information return x; } Lib<@Nullable T> x8(Lib<@Nullable T> x) { return x; } interface Lib {} } jspecify-1.0.0/samples/SuperNullableForNonNullableTypeParameter.java000066400000000000000000000020431464555076100257300ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class SuperNullableForNonNullableTypeParameter { interface NonNullableLib {} static class NullableLib { NullableLib(NonNullableLib l, T t) {} } static NullableLib x(NonNullableLib l, S s) { // jspecify_nullness_mismatch return new NullableLib<>(l, s); } } jspecify-1.0.0/samples/SuperObject.java000066400000000000000000000027661464555076100201100ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SuperObject { void foo( Lib lib, Object t, @NullnessUnspecified Object tUnspec, @Nullable Object tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_mismatch lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } interface Lib { void useT(T t); void useTUnspec(@NullnessUnspecified T t); void useTUnionNull(@Nullable T t); } } jspecify-1.0.0/samples/SuperObjectUnionNull.java000066400000000000000000000025271464555076100217470ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SuperObjectUnionNull { void foo( Lib lib, Object t, @NullnessUnspecified Object tUnspec, @Nullable Object tUnionNull) { lib.useT(t); lib.useT(tUnspec); lib.useT(tUnionNull); // lib.useTUnspec(t); lib.useTUnspec(tUnspec); lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } interface Lib { void useT(T t); void useTUnspec(@NullnessUnspecified T t); void useTUnionNull(@Nullable T t); } } jspecify-1.0.0/samples/SuperObjectUnspec.java000066400000000000000000000030371464555076100212560ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SuperObjectUnspec { void foo( Lib lib, Object t, @NullnessUnspecified Object tUnspec, @Nullable Object tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_not_enough_information lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } interface Lib { void useT(T t); void useTUnspec(@NullnessUnspecified T t); void useTUnionNull(@Nullable T t); } } jspecify-1.0.0/samples/SuperSameType.java000066400000000000000000000033231464555076100204170ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class SuperSameType { interface Foo {} interface Lib {} interface Receiver {} abstract void use(Lib> l); abstract void useUnspec(Lib> l); abstract void useUnionNull(Lib> l); void client(Lib> l) { use(l); // jspecify_nullness_not_enough_information useUnspec(l); // jspecify_nullness_mismatch useUnionNull(l); } void clientUnspec(Lib> l) { // jspecify_nullness_not_enough_information use(l); // jspecify_nullness_not_enough_information useUnspec(l); // jspecify_nullness_not_enough_information useUnionNull(l); } void clientUnionNull(Lib> l) { // jspecify_nullness_mismatch use(l); // jspecify_nullness_not_enough_information useUnspec(l); useUnionNull(l); } } jspecify-1.0.0/samples/SuperTypeVariable.java000066400000000000000000000063451464555076100212660ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SuperTypeVariable { void implicitlyObjectBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_mismatch lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void explicitlyObjectBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_mismatch lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void unspecBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_mismatch lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void nullableBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_mismatch lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } interface Lib { void useT(T t); void useTUnspec(@NullnessUnspecified T t); void useTUnionNull(@Nullable T t); } } jspecify-1.0.0/samples/SuperTypeVariableUnionNull.java000066400000000000000000000051161464555076100231250ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SuperTypeVariableUnionNull { void implicitlyObjectBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); lib.useT(tUnspec); lib.useT(tUnionNull); // lib.useTUnspec(t); lib.useTUnspec(tUnspec); lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void explicitlyObjectBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); lib.useT(tUnspec); lib.useT(tUnionNull); // lib.useTUnspec(t); lib.useTUnspec(tUnspec); lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void unspecBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); lib.useT(tUnspec); lib.useT(tUnionNull); // lib.useTUnspec(t); lib.useTUnspec(tUnspec); lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void nullableBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); lib.useT(tUnspec); lib.useT(tUnionNull); // lib.useTUnspec(t); lib.useTUnspec(tUnspec); lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } interface Lib { void useT(T t); void useTUnspec(@NullnessUnspecified T t); void useTUnionNull(@Nullable T t); } } jspecify-1.0.0/samples/SuperTypeVariableUnspec.java000066400000000000000000000066771464555076100224540ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SuperTypeVariableUnspec { void implicitlyObjectBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_not_enough_information lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void explicitlyObjectBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_not_enough_information lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void unspecBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_not_enough_information lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } void nullableBounded( Lib lib, T t, @NullnessUnspecified T tUnspec, @Nullable T tUnionNull) { lib.useT(t); // jspecify_nullness_not_enough_information lib.useT(tUnspec); // jspecify_nullness_not_enough_information lib.useT(tUnionNull); // lib.useTUnspec(t); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnspec); // jspecify_nullness_not_enough_information lib.useTUnspec(tUnionNull); // lib.useTUnionNull(t); lib.useTUnionNull(tUnspec); lib.useTUnionNull(tUnionNull); } interface Lib { void useT(T t); void useTUnspec(@NullnessUnspecified T t); void useTUnionNull(@Nullable T t); } } jspecify-1.0.0/samples/SuperVsObject.java000066400000000000000000000022611464555076100204070ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class SuperVsObject { interface Receiver {} Receiver x0(Receiver r) { // jspecify_nullness_mismatch return r; } Receiver x1(Receiver r) { // jspecify_nullness_not_enough_information return r; } Receiver x2(Receiver r) { return r; } } jspecify-1.0.0/samples/SuperVsSuperNullable.java000066400000000000000000000033431464555076100217600ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked interface SuperVsSuperNullable { interface Receiver {} interface Other {} default void x(Receiver r, Other o) { useNonNullBounded(r, o); // jspecify_nullness_not_enough_information useUnspecBounded(r, o); // jspecify_nullness_mismatch useUnionNullBounded(r, o); } default void x1(Receiver r, Other o) { useNonNullBounded(r, o); // jspecify_nullness_not_enough_information useUnspecBounded(r, o); // jspecify_nullness_not_enough_information useUnionNullBounded(r, o); } default void x2(Receiver r, Other o) { useNonNullBounded(r, o); useUnspecBounded(r, o); useUnionNullBounded(r, o); } void useNonNullBounded(Receiver r, Other o); void useUnspecBounded(Receiver r, Other o); void useUnionNullBounded(Receiver r, Other o); } jspecify-1.0.0/samples/Ternary.java000066400000000000000000000036761464555076100173100ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked abstract class Ternary { Object x0() { return b() ? object() : object(); } Object x1() { // jspecify_nullness_not_enough_information return b() ? object() : objectUnspec(); } Object x2() { // jspecify_nullness_mismatch return b() ? object() : objectUnionNull(); } Object x3() { // jspecify_nullness_not_enough_information return b() ? objectUnspec() : objectUnspec(); } Object x4() { // jspecify_nullness_mismatch return b() ? objectUnspec() : objectUnionNull(); } Object x5() { // jspecify_nullness_mismatch return b() ? objectUnionNull() : objectUnionNull(); } @Nullable Object x6() { return b() ? objectUnspec() : objectUnspec(); } Object x7() { // jspecify_nullness_mismatch return b() ? null : objectUnionNull(); } // jspecify_nullness_mismatch Object x0 = b() ? null : objectUnionNull(); // jspecify_nullness_not_enough_information @NullnessUnspecified Object x1 = b() ? null : objectUnionNull(); @Nullable Object x2 = b() ? null : objectUnionNull(); abstract boolean b(); abstract Object object(); abstract @NullnessUnspecified Object objectUnspec(); abstract @Nullable Object objectUnionNull(); } jspecify-1.0.0/samples/TypeArgumentOfTypeVariableBound.java000066400000000000000000000040061464555076100240610ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeArgumentOfTypeVariableBound { interface Supplier { T get(); } > Supplier x1(S s) { return s; } > Supplier<@NullnessUnspecified Object> x2(S s) { // jspecify_nullness_not_enough_information return s; } > Supplier<@Nullable Object> x3(S s) { // jspecify_nullness_mismatch return s; } > Supplier x4(S s) { // jspecify_nullness_not_enough_information return s; } > Supplier<@NullnessUnspecified Object> x5(S s) { // jspecify_nullness_not_enough_information return s; } > Supplier<@Nullable Object> x6(S s) { // jspecify_nullness_not_enough_information return s; } > Supplier x7(S s) { // jspecify_nullness_mismatch return s; } > Supplier<@NullnessUnspecified Object> x8(S s) { // jspecify_nullness_not_enough_information return s; } > Supplier<@Nullable Object> x9(S s) { return s; } } jspecify-1.0.0/samples/TypeArgumentOfWildcardBound.java000066400000000000000000000041651464555076100232310ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeArgumentOfWildcardBound { interface Supplier { T get(); } Supplier x1(Supplier> s) { return s.get(); } Supplier<@NullnessUnspecified Object> x2(Supplier> s) { // jspecify_nullness_not_enough_information return s.get(); } Supplier<@Nullable Object> x3(Supplier> s) { // jspecify_nullness_mismatch return s.get(); } Supplier x4(Supplier> s) { // jspecify_nullness_not_enough_information return s.get(); } Supplier<@NullnessUnspecified Object> x5( Supplier> s) { // jspecify_nullness_not_enough_information return s.get(); } Supplier<@Nullable Object> x6(Supplier> s) { // jspecify_nullness_not_enough_information return s.get(); } Supplier x7(Supplier> s) { // jspecify_nullness_mismatch return s.get(); } Supplier<@NullnessUnspecified Object> x8(Supplier> s) { // jspecify_nullness_not_enough_information return s.get(); } Supplier<@Nullable Object> x9(Supplier> s) { return s.get(); } } jspecify-1.0.0/samples/TypeVariableMinusNullVsTypeVariable.java000066400000000000000000000045231464555076100247330ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class TypeVariableMinusNullVsTypeVariable { interface Supplier {} interface NonnullSupplier extends Supplier { NonnullSupplier caching(); } Supplier cachingIfPossible(Supplier supplier) { if (supplier instanceof NonnullSupplier) { // jspecify_nullness_mismatch NonnullSupplier cast = // jspecify_nullness_mismatch (NonnullSupplier) supplier; /* * TODO(cpovirk): Can/should we change the spec to make the following statement not be a * mismatch? * * I actually think I'm OK with the mismatch: The overall operation would still include a * mismatch (above). And the mismatch above makes sense: it's worth, I tested some similar * plain-Java code that uses Supplier and NumberSupplier, and its * reference to NumberSupplier fails to compile. * * (A related bug different thing: Our checker currently *doesn't* issue an error merely if we * merely *cast* to NonnullSupplier, only if we actually declare a variable of that type. * It might be interesting to see what upstream CF does. Note that the code this sample is * based on, Guava's Lists.java, has a cast without a local variable. So Guava sees no error * except the one below.) * * (Assuming that we keep the error here, there should be a workaround: Cast to * NonnullSupplier, call caching(), and then unchecked-cast the result to Supplier.) */ // jspecify_nullness_mismatch return cast.caching(); } return supplier; } } jspecify-1.0.0/samples/TypeVariableToObject.java000066400000000000000000000055351464555076100217010ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToObject< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Object x0(Never1T x) { return x; } Object x1(ChildOfNever1T x) { return x; } Object x2(UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } Object x3(NullChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Object x4(Never2T x) { return x; } Object x5(ChildOfNever2T x) { return x; } Object x6(UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } Object x7(NullChildOfNever2T x) { // jspecify_nullness_mismatch return x; } Object x8(UnspecT x) { // jspecify_nullness_not_enough_information return x; } Object x9(ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } Object x10(UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } Object x11(NullChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } Object x12(ParametricT x) { // jspecify_nullness_mismatch return x; } Object x13(ChildOfParametricT x) { // jspecify_nullness_mismatch return x; } Object x14(UnspecChildOfParametricT x) { // jspecify_nullness_mismatch return x; } Object x15(NullChildOfParametricT x) { // jspecify_nullness_mismatch return x; } } jspecify-1.0.0/samples/TypeVariableToObjectUnionNull.java000066400000000000000000000050501464555076100235350ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToObjectUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Object x0(Never1T x) { return x; } @Nullable Object x1(ChildOfNever1T x) { return x; } @Nullable Object x2(UnspecChildOfNever1T x) { return x; } @Nullable Object x3(NullChildOfNever1T x) { return x; } @Nullable Object x4(Never2T x) { return x; } @Nullable Object x5(ChildOfNever2T x) { return x; } @Nullable Object x6(UnspecChildOfNever2T x) { return x; } @Nullable Object x7(NullChildOfNever2T x) { return x; } @Nullable Object x8(UnspecT x) { return x; } @Nullable Object x9(ChildOfUnspecT x) { return x; } @Nullable Object x10(UnspecChildOfUnspecT x) { return x; } @Nullable Object x11(NullChildOfUnspecT x) { return x; } @Nullable Object x12(ParametricT x) { return x; } @Nullable Object x13(ChildOfParametricT x) { return x; } @Nullable Object x14(UnspecChildOfParametricT x) { return x; } @Nullable Object x15(NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableToObjectUnspec.java000066400000000000000000000064251464555076100230560ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToObjectUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Object x0(Never1T x) { return x; } @NullnessUnspecified Object x1(ChildOfNever1T x) { return x; } @NullnessUnspecified Object x2(UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x3(NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x4(Never2T x) { return x; } @NullnessUnspecified Object x5(ChildOfNever2T x) { return x; } @NullnessUnspecified Object x6(UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x7(NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x8(UnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x9(ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x10(UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x11(NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x12(ParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x13(ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x14(UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x15(NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableToParent.java000066400000000000000000000050471464555076100217220ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToParent< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Never1T x0(ChildOfNever1T x) { return x; } Never1T x1(UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } Never1T x2(NullChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Never2T x3(ChildOfNever2T x) { return x; } Never2T x4(UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } Never2T x5(NullChildOfNever2T x) { // jspecify_nullness_mismatch return x; } UnspecT x6(ChildOfUnspecT x) { return x; } UnspecT x7(UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } UnspecT x8(NullChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } ParametricT x9(ChildOfParametricT x) { return x; } ParametricT x10(UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } ParametricT x11(NullChildOfParametricT x) { // jspecify_nullness_mismatch return x; } } jspecify-1.0.0/samples/TypeVariableToParentUnionNull.java000066400000000000000000000045401464555076100235630ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToParentUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Never1T x0(ChildOfNever1T x) { return x; } @Nullable Never1T x1(UnspecChildOfNever1T x) { return x; } @Nullable Never1T x2(NullChildOfNever1T x) { return x; } @Nullable Never2T x3(ChildOfNever2T x) { return x; } @Nullable Never2T x4(UnspecChildOfNever2T x) { return x; } @Nullable Never2T x5(NullChildOfNever2T x) { return x; } @Nullable UnspecT x6(ChildOfUnspecT x) { return x; } @Nullable UnspecT x7(UnspecChildOfUnspecT x) { return x; } @Nullable UnspecT x8(NullChildOfUnspecT x) { return x; } @Nullable ParametricT x9(ChildOfParametricT x) { return x; } @Nullable ParametricT x10(UnspecChildOfParametricT x) { return x; } @Nullable ParametricT x11(NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableToParentUnspec.java000066400000000000000000000055411464555076100230770ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToParentUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Never1T x0(ChildOfNever1T x) { return x; } @NullnessUnspecified Never1T x1(UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never1T x2(NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x3(ChildOfNever2T x) { return x; } @NullnessUnspecified Never2T x4(UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x5(NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x6(ChildOfUnspecT x) { return x; } @NullnessUnspecified UnspecT x7(UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x8(NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x9(ChildOfParametricT x) { return x; } @NullnessUnspecified ParametricT x10(UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x11(NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableToSelf.java000066400000000000000000000050311464555076100213530ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToSelf< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Never1T x0(Never1T x) { return x; } ChildOfNever1T x1(ChildOfNever1T x) { return x; } UnspecChildOfNever1T x2(UnspecChildOfNever1T x) { return x; } NullChildOfNever1T x3(NullChildOfNever1T x) { return x; } Never2T x4(Never2T x) { return x; } ChildOfNever2T x5(ChildOfNever2T x) { return x; } UnspecChildOfNever2T x6(UnspecChildOfNever2T x) { return x; } NullChildOfNever2T x7(NullChildOfNever2T x) { return x; } UnspecT x8(UnspecT x) { return x; } ChildOfUnspecT x9(ChildOfUnspecT x) { return x; } UnspecChildOfUnspecT x10(UnspecChildOfUnspecT x) { return x; } NullChildOfUnspecT x11(NullChildOfUnspecT x) { return x; } ParametricT x12(ParametricT x) { return x; } ChildOfParametricT x13(ChildOfParametricT x) { return x; } UnspecChildOfParametricT x14(UnspecChildOfParametricT x) { return x; } NullChildOfParametricT x15(NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableToSelfUnionNull.java000066400000000000000000000053021464555076100232200ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToSelfUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Never1T x0(Never1T x) { return x; } @Nullable ChildOfNever1T x1(ChildOfNever1T x) { return x; } @Nullable UnspecChildOfNever1T x2(UnspecChildOfNever1T x) { return x; } @Nullable NullChildOfNever1T x3(NullChildOfNever1T x) { return x; } @Nullable Never2T x4(Never2T x) { return x; } @Nullable ChildOfNever2T x5(ChildOfNever2T x) { return x; } @Nullable UnspecChildOfNever2T x6(UnspecChildOfNever2T x) { return x; } @Nullable NullChildOfNever2T x7(NullChildOfNever2T x) { return x; } @Nullable UnspecT x8(UnspecT x) { return x; } @Nullable ChildOfUnspecT x9(ChildOfUnspecT x) { return x; } @Nullable UnspecChildOfUnspecT x10(UnspecChildOfUnspecT x) { return x; } @Nullable NullChildOfUnspecT x11(NullChildOfUnspecT x) { return x; } @Nullable ParametricT x12(ParametricT x) { return x; } @Nullable ChildOfParametricT x13(ChildOfParametricT x) { return x; } @Nullable UnspecChildOfParametricT x14(UnspecChildOfParametricT x) { return x; } @Nullable NullChildOfParametricT x15(NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableToSelfUnspec.java000066400000000000000000000055571464555076100225460ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableToSelfUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Never1T x0(Never1T x) { return x; } @NullnessUnspecified ChildOfNever1T x1(ChildOfNever1T x) { return x; } @NullnessUnspecified UnspecChildOfNever1T x2(UnspecChildOfNever1T x) { return x; } @NullnessUnspecified NullChildOfNever1T x3(NullChildOfNever1T x) { return x; } @NullnessUnspecified Never2T x4(Never2T x) { return x; } @NullnessUnspecified ChildOfNever2T x5(ChildOfNever2T x) { return x; } @NullnessUnspecified UnspecChildOfNever2T x6(UnspecChildOfNever2T x) { return x; } @NullnessUnspecified NullChildOfNever2T x7(NullChildOfNever2T x) { return x; } @NullnessUnspecified UnspecT x8(UnspecT x) { return x; } @NullnessUnspecified ChildOfUnspecT x9(ChildOfUnspecT x) { return x; } @NullnessUnspecified UnspecChildOfUnspecT x10(UnspecChildOfUnspecT x) { return x; } @NullnessUnspecified NullChildOfUnspecT x11(NullChildOfUnspecT x) { return x; } @NullnessUnspecified ParametricT x12(ParametricT x) { return x; } @NullnessUnspecified ChildOfParametricT x13(ChildOfParametricT x) { return x; } @NullnessUnspecified UnspecChildOfParametricT x14(UnspecChildOfParametricT x) { return x; } @NullnessUnspecified NullChildOfParametricT x15(NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToObject.java000066400000000000000000000061101464555076100235330ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToObject< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Object x0(@Nullable Never1T x) { // jspecify_nullness_mismatch return x; } Object x1(@Nullable ChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Object x2(@Nullable UnspecChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Object x3(@Nullable NullChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Object x4(@Nullable Never2T x) { // jspecify_nullness_mismatch return x; } Object x5(@Nullable ChildOfNever2T x) { // jspecify_nullness_mismatch return x; } Object x6(@Nullable UnspecChildOfNever2T x) { // jspecify_nullness_mismatch return x; } Object x7(@Nullable NullChildOfNever2T x) { // jspecify_nullness_mismatch return x; } Object x8(@Nullable UnspecT x) { // jspecify_nullness_mismatch return x; } Object x9(@Nullable ChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } Object x10(@Nullable UnspecChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } Object x11(@Nullable NullChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } Object x12(@Nullable ParametricT x) { // jspecify_nullness_mismatch return x; } Object x13(@Nullable ChildOfParametricT x) { // jspecify_nullness_mismatch return x; } Object x14(@Nullable UnspecChildOfParametricT x) { // jspecify_nullness_mismatch return x; } Object x15(@Nullable NullChildOfParametricT x) { // jspecify_nullness_mismatch return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToObjectUnionNull.java000066400000000000000000000053211464555076100254020ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToObjectUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Object x0(@Nullable Never1T x) { return x; } @Nullable Object x1(@Nullable ChildOfNever1T x) { return x; } @Nullable Object x2(@Nullable UnspecChildOfNever1T x) { return x; } @Nullable Object x3(@Nullable NullChildOfNever1T x) { return x; } @Nullable Object x4(@Nullable Never2T x) { return x; } @Nullable Object x5(@Nullable ChildOfNever2T x) { return x; } @Nullable Object x6(@Nullable UnspecChildOfNever2T x) { return x; } @Nullable Object x7(@Nullable NullChildOfNever2T x) { return x; } @Nullable Object x8(@Nullable UnspecT x) { return x; } @Nullable Object x9(@Nullable ChildOfUnspecT x) { return x; } @Nullable Object x10(@Nullable UnspecChildOfUnspecT x) { return x; } @Nullable Object x11(@Nullable NullChildOfUnspecT x) { return x; } @Nullable Object x12(@Nullable ParametricT x) { return x; } @Nullable Object x13(@Nullable ChildOfParametricT x) { return x; } @Nullable Object x14(@Nullable UnspecChildOfParametricT x) { return x; } @Nullable Object x15(@Nullable NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToObjectUnspec.java000066400000000000000000000071761464555076100247260ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToObjectUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Object x0(@Nullable Never1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x1(@Nullable ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x2(@Nullable UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x3(@Nullable NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x4(@Nullable Never2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x5(@Nullable ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x6(@Nullable UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x7(@Nullable NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x8(@Nullable UnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x9(@Nullable ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x10(@Nullable UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x11(@Nullable NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x12(@Nullable ParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x13(@Nullable ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x14(@Nullable UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x15(@Nullable NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToParent.java000066400000000000000000000053701464555076100235650ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToParent< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Never1T x0(@Nullable ChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Never1T x1(@Nullable UnspecChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Never1T x2(@Nullable NullChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Never2T x3(@Nullable ChildOfNever2T x) { // jspecify_nullness_mismatch return x; } Never2T x4(@Nullable UnspecChildOfNever2T x) { // jspecify_nullness_mismatch return x; } Never2T x5(@Nullable NullChildOfNever2T x) { // jspecify_nullness_mismatch return x; } UnspecT x6(@Nullable ChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } UnspecT x7(@Nullable UnspecChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } UnspecT x8(@Nullable NullChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } ParametricT x9(@Nullable ChildOfParametricT x) { // jspecify_nullness_mismatch return x; } ParametricT x10(@Nullable UnspecChildOfParametricT x) { // jspecify_nullness_mismatch return x; } ParametricT x11(@Nullable NullChildOfParametricT x) { // jspecify_nullness_mismatch return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToParentUnionNull.java000066400000000000000000000047411464555076100254320ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToParentUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Never1T x0(@Nullable ChildOfNever1T x) { return x; } @Nullable Never1T x1(@Nullable UnspecChildOfNever1T x) { return x; } @Nullable Never1T x2(@Nullable NullChildOfNever1T x) { return x; } @Nullable Never2T x3(@Nullable ChildOfNever2T x) { return x; } @Nullable Never2T x4(@Nullable UnspecChildOfNever2T x) { return x; } @Nullable Never2T x5(@Nullable NullChildOfNever2T x) { return x; } @Nullable UnspecT x6(@Nullable ChildOfUnspecT x) { return x; } @Nullable UnspecT x7(@Nullable UnspecChildOfUnspecT x) { return x; } @Nullable UnspecT x8(@Nullable NullChildOfUnspecT x) { return x; } @Nullable ParametricT x9(@Nullable ChildOfParametricT x) { return x; } @Nullable ParametricT x10(@Nullable UnspecChildOfParametricT x) { return x; } @Nullable ParametricT x11(@Nullable NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToParentUnspec.java000066400000000000000000000062421464555076100247420ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToParentUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Never1T x0(@Nullable ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never1T x1(@Nullable UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never1T x2(@Nullable NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x3(@Nullable ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x4(@Nullable UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x5(@Nullable NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x6(@Nullable ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x7(@Nullable UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x8(@Nullable NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x9(@Nullable ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x10(@Nullable UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x11(@Nullable NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToSelf.java000066400000000000000000000063421464555076100232250ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToSelf< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Never1T x0(@Nullable Never1T x) { // jspecify_nullness_mismatch return x; } ChildOfNever1T x1(@Nullable ChildOfNever1T x) { // jspecify_nullness_mismatch return x; } UnspecChildOfNever1T x2(@Nullable UnspecChildOfNever1T x) { // jspecify_nullness_mismatch return x; } NullChildOfNever1T x3(@Nullable NullChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Never2T x4(@Nullable Never2T x) { // jspecify_nullness_mismatch return x; } ChildOfNever2T x5(@Nullable ChildOfNever2T x) { // jspecify_nullness_mismatch return x; } UnspecChildOfNever2T x6(@Nullable UnspecChildOfNever2T x) { // jspecify_nullness_mismatch return x; } NullChildOfNever2T x7(@Nullable NullChildOfNever2T x) { // jspecify_nullness_mismatch return x; } UnspecT x8(@Nullable UnspecT x) { // jspecify_nullness_mismatch return x; } ChildOfUnspecT x9(@Nullable ChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } UnspecChildOfUnspecT x10(@Nullable UnspecChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } NullChildOfUnspecT x11(@Nullable NullChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } ParametricT x12(@Nullable ParametricT x) { // jspecify_nullness_mismatch return x; } ChildOfParametricT x13(@Nullable ChildOfParametricT x) { // jspecify_nullness_mismatch return x; } UnspecChildOfParametricT x14(@Nullable UnspecChildOfParametricT x) { // jspecify_nullness_mismatch return x; } NullChildOfParametricT x15(@Nullable NullChildOfParametricT x) { // jspecify_nullness_mismatch return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToSelfUnionNull.java000066400000000000000000000055531464555076100250740ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToSelfUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Never1T x0(@Nullable Never1T x) { return x; } @Nullable ChildOfNever1T x1(@Nullable ChildOfNever1T x) { return x; } @Nullable UnspecChildOfNever1T x2(@Nullable UnspecChildOfNever1T x) { return x; } @Nullable NullChildOfNever1T x3(@Nullable NullChildOfNever1T x) { return x; } @Nullable Never2T x4(@Nullable Never2T x) { return x; } @Nullable ChildOfNever2T x5(@Nullable ChildOfNever2T x) { return x; } @Nullable UnspecChildOfNever2T x6(@Nullable UnspecChildOfNever2T x) { return x; } @Nullable NullChildOfNever2T x7(@Nullable NullChildOfNever2T x) { return x; } @Nullable UnspecT x8(@Nullable UnspecT x) { return x; } @Nullable ChildOfUnspecT x9(@Nullable ChildOfUnspecT x) { return x; } @Nullable UnspecChildOfUnspecT x10(@Nullable UnspecChildOfUnspecT x) { return x; } @Nullable NullChildOfUnspecT x11(@Nullable NullChildOfUnspecT x) { return x; } @Nullable ParametricT x12(@Nullable ParametricT x) { return x; } @Nullable ChildOfParametricT x13(@Nullable ChildOfParametricT x) { return x; } @Nullable UnspecChildOfParametricT x14(@Nullable UnspecChildOfParametricT x) { return x; } @Nullable NullChildOfParametricT x15(@Nullable NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableUnionNullToSelfUnspec.java000066400000000000000000000074301464555076100244020ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnionNullToSelfUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Never1T x0(@Nullable Never1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfNever1T x1(@Nullable ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfNever1T x2(@Nullable UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfNever1T x3(@Nullable NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x4(@Nullable Never2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfNever2T x5(@Nullable ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfNever2T x6(@Nullable UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfNever2T x7(@Nullable NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x8(@Nullable UnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfUnspecT x9(@Nullable ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfUnspecT x10(@Nullable UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfUnspecT x11(@Nullable NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x12(@Nullable ParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfParametricT x13(@Nullable ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfParametricT x14(@Nullable UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfParametricT x15(@Nullable NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToObject.java000066400000000000000000000065631464555076100230610ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToObject< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Object x0(@NullnessUnspecified Never1T x) { // jspecify_nullness_not_enough_information return x; } Object x1(@NullnessUnspecified ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } Object x2(@NullnessUnspecified UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } Object x3(@NullnessUnspecified NullChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Object x4(@NullnessUnspecified Never2T x) { // jspecify_nullness_not_enough_information return x; } Object x5(@NullnessUnspecified ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } Object x6(@NullnessUnspecified UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } Object x7(@NullnessUnspecified NullChildOfNever2T x) { // jspecify_nullness_mismatch return x; } Object x8(@NullnessUnspecified UnspecT x) { // jspecify_nullness_not_enough_information return x; } Object x9(@NullnessUnspecified ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } Object x10(@NullnessUnspecified UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } Object x11(@NullnessUnspecified NullChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } Object x12(@NullnessUnspecified ParametricT x) { // jspecify_nullness_mismatch return x; } Object x13(@NullnessUnspecified ChildOfParametricT x) { // jspecify_nullness_mismatch return x; } Object x14(@NullnessUnspecified UnspecChildOfParametricT x) { // jspecify_nullness_mismatch return x; } Object x15(@NullnessUnspecified NullChildOfParametricT x) { // jspecify_nullness_mismatch return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToObjectUnionNull.java000066400000000000000000000055761464555076100247300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToObjectUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Object x0(@NullnessUnspecified Never1T x) { return x; } @Nullable Object x1(@NullnessUnspecified ChildOfNever1T x) { return x; } @Nullable Object x2(@NullnessUnspecified UnspecChildOfNever1T x) { return x; } @Nullable Object x3(@NullnessUnspecified NullChildOfNever1T x) { return x; } @Nullable Object x4(@NullnessUnspecified Never2T x) { return x; } @Nullable Object x5(@NullnessUnspecified ChildOfNever2T x) { return x; } @Nullable Object x6(@NullnessUnspecified UnspecChildOfNever2T x) { return x; } @Nullable Object x7(@NullnessUnspecified NullChildOfNever2T x) { return x; } @Nullable Object x8(@NullnessUnspecified UnspecT x) { return x; } @Nullable Object x9(@NullnessUnspecified ChildOfUnspecT x) { return x; } @Nullable Object x10(@NullnessUnspecified UnspecChildOfUnspecT x) { return x; } @Nullable Object x11(@NullnessUnspecified NullChildOfUnspecT x) { return x; } @Nullable Object x12(@NullnessUnspecified ParametricT x) { return x; } @Nullable Object x13(@NullnessUnspecified ChildOfParametricT x) { return x; } @Nullable Object x14(@NullnessUnspecified UnspecChildOfParametricT x) { return x; } @Nullable Object x15(@NullnessUnspecified NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToObjectUnspec.java000066400000000000000000000074531464555076100242360ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToObjectUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Object x0(@NullnessUnspecified Never1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x1(@NullnessUnspecified ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x2(@NullnessUnspecified UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x3(@NullnessUnspecified NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x4(@NullnessUnspecified Never2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x5(@NullnessUnspecified ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x6(@NullnessUnspecified UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x7(@NullnessUnspecified NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x8(@NullnessUnspecified UnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x9(@NullnessUnspecified ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x10(@NullnessUnspecified UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x11(@NullnessUnspecified NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x12(@NullnessUnspecified ParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x13(@NullnessUnspecified ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x14(@NullnessUnspecified UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Object x15(@NullnessUnspecified NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToParent.java000066400000000000000000000057511464555076100231020ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToParent< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Never1T x0(@NullnessUnspecified ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } Never1T x1(@NullnessUnspecified UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } Never1T x2(@NullnessUnspecified NullChildOfNever1T x) { // jspecify_nullness_mismatch return x; } Never2T x3(@NullnessUnspecified ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } Never2T x4(@NullnessUnspecified UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } Never2T x5(@NullnessUnspecified NullChildOfNever2T x) { // jspecify_nullness_mismatch return x; } UnspecT x6(@NullnessUnspecified ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } UnspecT x7(@NullnessUnspecified UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } UnspecT x8(@NullnessUnspecified NullChildOfUnspecT x) { // jspecify_nullness_mismatch return x; } ParametricT x9(@NullnessUnspecified ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } ParametricT x10(@NullnessUnspecified UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } ParametricT x11(@NullnessUnspecified NullChildOfParametricT x) { // jspecify_nullness_mismatch return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToParentUnionNull.java000066400000000000000000000051421464555076100247400ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToParentUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Never1T x0(@NullnessUnspecified ChildOfNever1T x) { return x; } @Nullable Never1T x1(@NullnessUnspecified UnspecChildOfNever1T x) { return x; } @Nullable Never1T x2(@NullnessUnspecified NullChildOfNever1T x) { return x; } @Nullable Never2T x3(@NullnessUnspecified ChildOfNever2T x) { return x; } @Nullable Never2T x4(@NullnessUnspecified UnspecChildOfNever2T x) { return x; } @Nullable Never2T x5(@NullnessUnspecified NullChildOfNever2T x) { return x; } @Nullable UnspecT x6(@NullnessUnspecified ChildOfUnspecT x) { return x; } @Nullable UnspecT x7(@NullnessUnspecified UnspecChildOfUnspecT x) { return x; } @Nullable UnspecT x8(@NullnessUnspecified NullChildOfUnspecT x) { return x; } @Nullable ParametricT x9(@NullnessUnspecified ChildOfParametricT x) { return x; } @Nullable ParametricT x10(@NullnessUnspecified UnspecChildOfParametricT x) { return x; } @Nullable ParametricT x11(@NullnessUnspecified NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToParentUnspec.java000066400000000000000000000064431464555076100242570ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToParentUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Never1T x0(@NullnessUnspecified ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never1T x1(@NullnessUnspecified UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never1T x2(@NullnessUnspecified NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x3(@NullnessUnspecified ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x4(@NullnessUnspecified UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x5(@NullnessUnspecified NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x6(@NullnessUnspecified ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x7(@NullnessUnspecified UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x8(@NullnessUnspecified NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x9(@NullnessUnspecified ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x10(@NullnessUnspecified UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x11(@NullnessUnspecified NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToSelf.java000066400000000000000000000071571464555076100225440ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToSelf< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { Never1T x0(@NullnessUnspecified Never1T x) { // jspecify_nullness_not_enough_information return x; } ChildOfNever1T x1(@NullnessUnspecified ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } UnspecChildOfNever1T x2(@NullnessUnspecified UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } NullChildOfNever1T x3(@NullnessUnspecified NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } Never2T x4(@NullnessUnspecified Never2T x) { // jspecify_nullness_not_enough_information return x; } ChildOfNever2T x5(@NullnessUnspecified ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } UnspecChildOfNever2T x6(@NullnessUnspecified UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } NullChildOfNever2T x7(@NullnessUnspecified NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } UnspecT x8(@NullnessUnspecified UnspecT x) { // jspecify_nullness_not_enough_information return x; } ChildOfUnspecT x9(@NullnessUnspecified ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } UnspecChildOfUnspecT x10(@NullnessUnspecified UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } NullChildOfUnspecT x11(@NullnessUnspecified NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } ParametricT x12(@NullnessUnspecified ParametricT x) { // jspecify_nullness_not_enough_information return x; } ChildOfParametricT x13(@NullnessUnspecified ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } UnspecChildOfParametricT x14(@NullnessUnspecified UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } NullChildOfParametricT x15(@NullnessUnspecified NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToSelfUnionNull.java000066400000000000000000000060301464555076100243750ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToSelfUnionNull< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @Nullable Never1T x0(@NullnessUnspecified Never1T x) { return x; } @Nullable ChildOfNever1T x1(@NullnessUnspecified ChildOfNever1T x) { return x; } @Nullable UnspecChildOfNever1T x2(@NullnessUnspecified UnspecChildOfNever1T x) { return x; } @Nullable NullChildOfNever1T x3(@NullnessUnspecified NullChildOfNever1T x) { return x; } @Nullable Never2T x4(@NullnessUnspecified Never2T x) { return x; } @Nullable ChildOfNever2T x5(@NullnessUnspecified ChildOfNever2T x) { return x; } @Nullable UnspecChildOfNever2T x6(@NullnessUnspecified UnspecChildOfNever2T x) { return x; } @Nullable NullChildOfNever2T x7(@NullnessUnspecified NullChildOfNever2T x) { return x; } @Nullable UnspecT x8(@NullnessUnspecified UnspecT x) { return x; } @Nullable ChildOfUnspecT x9(@NullnessUnspecified ChildOfUnspecT x) { return x; } @Nullable UnspecChildOfUnspecT x10(@NullnessUnspecified UnspecChildOfUnspecT x) { return x; } @Nullable NullChildOfUnspecT x11(@NullnessUnspecified NullChildOfUnspecT x) { return x; } @Nullable ParametricT x12(@NullnessUnspecified ParametricT x) { return x; } @Nullable ChildOfParametricT x13(@NullnessUnspecified ChildOfParametricT x) { return x; } @Nullable UnspecChildOfParametricT x14(@NullnessUnspecified UnspecChildOfParametricT x) { return x; } @Nullable NullChildOfParametricT x15(@NullnessUnspecified NullChildOfParametricT x) { return x; } } jspecify-1.0.0/samples/TypeVariableUnspecToSelfUnspec.java000066400000000000000000000077051464555076100237210ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class TypeVariableUnspecToSelfUnspec< Never1T, ChildOfNever1T extends Never1T, UnspecChildOfNever1T extends @NullnessUnspecified Never1T, NullChildOfNever1T extends @Nullable Never1T, // Never2T extends Object, ChildOfNever2T extends Never2T, UnspecChildOfNever2T extends @NullnessUnspecified Never2T, NullChildOfNever2T extends @Nullable Never2T, // UnspecT extends @NullnessUnspecified Object, ChildOfUnspecT extends UnspecT, UnspecChildOfUnspecT extends @NullnessUnspecified UnspecT, NullChildOfUnspecT extends @Nullable UnspecT, // ParametricT extends @Nullable Object, ChildOfParametricT extends ParametricT, UnspecChildOfParametricT extends @NullnessUnspecified ParametricT, NullChildOfParametricT extends @Nullable ParametricT, // UnusedT> { @NullnessUnspecified Never1T x0(@NullnessUnspecified Never1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfNever1T x1(@NullnessUnspecified ChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfNever1T x2(@NullnessUnspecified UnspecChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfNever1T x3(@NullnessUnspecified NullChildOfNever1T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified Never2T x4(@NullnessUnspecified Never2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfNever2T x5(@NullnessUnspecified ChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfNever2T x6(@NullnessUnspecified UnspecChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfNever2T x7(@NullnessUnspecified NullChildOfNever2T x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecT x8(@NullnessUnspecified UnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfUnspecT x9(@NullnessUnspecified ChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfUnspecT x10(@NullnessUnspecified UnspecChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfUnspecT x11(@NullnessUnspecified NullChildOfUnspecT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ParametricT x12(@NullnessUnspecified ParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified ChildOfParametricT x13(@NullnessUnspecified ChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified UnspecChildOfParametricT x14(@NullnessUnspecified UnspecChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } @NullnessUnspecified NullChildOfParametricT x15(@NullnessUnspecified NullChildOfParametricT x) { // jspecify_nullness_not_enough_information return x; } } jspecify-1.0.0/samples/Unboxing.java000066400000000000000000000023421464555076100174420ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class Unboxing { int x0(Integer i) { return i; } int x1(@NullnessUnspecified Integer i) { // jspecify_nullness_not_enough_information return i; } int x2(@Nullable Integer i) { // jspecify_nullness_mismatch return i; } long x3(Integer i) { return i; } long x4(@NullnessUnspecified Integer i) { // jspecify_nullness_not_enough_information return i; } long x5(@Nullable Integer i) { // jspecify_nullness_mismatch return i; } } jspecify-1.0.0/samples/UninitializedField.java000066400000000000000000000021631464555076100214260ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UninitializedField { // jspecify_nullness_mismatch Object object; // jspecify_nullness_not_enough_information @NullnessUnspecified Object objectUnspec; @Nullable Object objectUnionNull; // jspecify_nullness_mismatch T t; // jspecify_nullness_not_enough_information @NullnessUnspecified T tUnspec; @Nullable T tUnionNull; } jspecify-1.0.0/samples/UnionTypeArgumentWithUseSite.java000066400000000000000000000050631464555076100234470ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UnionTypeArgumentWithUseSite { interface Super { void t(T t); void tUnspec(@NullnessUnspecified T t); void tUnionNull(@Nullable T t); } interface Sub extends Super { @Override void t(Object t); @Override // jspecify_nullness_not_enough_information void tUnspec(@NullnessUnspecified Object t); @Override void tUnionNull(@Nullable Object t); } interface SubUnspec extends Super<@NullnessUnspecified Object> { @Override // jspecify_nullness_not_enough_information void t(@NullnessUnspecified Object t); @Override // jspecify_nullness_not_enough_information void tUnspec(@NullnessUnspecified Object t); @Override void tUnionNull(@Nullable Object t); } interface SubUnionNull extends Super<@Nullable Object> { @Override void t(@Nullable Object t); @Override void tUnspec(@Nullable Object t); @Override void tUnionNull(@Nullable Object t); } interface SubWeaker extends Super { @Override // jspecify_nullness_not_enough_information void tUnspec(Object t); @Override // jspecify_nullness_mismatch void tUnionNull(Object t); } interface SubWeakerUnspec extends Super<@NullnessUnspecified Object> { @Override // jspecify_nullness_not_enough_information void t(Object t); @Override // jspecify_nullness_not_enough_information void tUnspec(Object t); @Override // jspecify_nullness_mismatch void tUnionNull(Object t); } interface SubWeakerUnionNull extends Super<@Nullable Object> { @Override // jspecify_nullness_mismatch void t(Object t); @Override // jspecify_nullness_mismatch void tUnspec(Object t); @Override // jspecify_nullness_mismatch void tUnionNull(Object t); } } jspecify-1.0.0/samples/UnrecognizedLocationsMisc.java000066400000000000000000000032131464555076100227730ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; // Covered by // conformance-tests/src/assertions/java/org/jspecify/conformance/tests/irrelevantannotations/notnullmarked/Other.java @NullMarked abstract class UnrecognizedLocationsMisc { interface Super {} static class Sub // jspecify_nullness_intrinsically_not_nullable extends @Nullable Object // jspecify_nullness_intrinsically_not_nullable implements @Nullable Super { // jspecify_nullness_intrinsically_not_nullable @Nullable Sub() {} } void foo() throws Exception { try { // jspecify_unrecognized_location @Nullable Object o; @Nullable Object[] a0; // jspecify_unrecognized_location Object @Nullable [] a1; // jspecify_unrecognized_location @Nullable Object @Nullable [] a2; // jspecify_unrecognized_location } catch (@Nullable Exception e) { } // jspecify_unrecognized_location try (@Nullable AutoCloseable a = get()) {} } abstract AutoCloseable get(); } jspecify-1.0.0/samples/UnspecifiedClassTypeArgumentForNonNullableParameter.java000066400000000000000000000017051464555076100301060ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; class UnspecifiedClassTypeArgumentForNonNullableParameter { @NullMarked interface ConsumerWithNonNullableBound { void accept(E e); } void x( // jspecify_nullness_not_enough_information ConsumerWithNonNullableBound c) { // jspecify_nullness_mismatch c.accept(null); } } jspecify-1.0.0/samples/UnspecifiedTypeArgumentForNonNullableParameter.java000066400000000000000000000027661464555076100271300ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UnspecifiedTypeArgumentForNonNullableParameter { interface SupplierWithNonNullableBound { E get(); } String x0( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified String> s) { return s.get(); } String x1( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified E> s) { return s.get(); } String x2( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound s) { return s.get(); } String x3( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified E> s) { return s.get(); } } jspecify-1.0.0/samples/UnspecifiedTypeArgumentForNonNullableParameterRepeatedSubstitution.java000066400000000000000000000033101464555076100332210ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UnspecifiedTypeArgumentForNonNullableParameterRepeatedSubstitution { interface SuperSupplierWithNonNullableBound { E get(); } interface SupplierWithNonNullableBound // jspecify_nullness_not_enough_information extends SuperSupplierWithNonNullableBound {} String x0( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified String> s) { return s.get(); } String x1( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified E> s) { return s.get(); } String x2( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound s) { return s.get(); } String x3( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified E> s) { return s.get(); } } jspecify-1.0.0/samples/UnspecifiedTypeArgumentForNonNullableParameterUseUnspec.java000066400000000000000000000033241464555076100307520ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UnspecifiedTypeArgumentForNonNullableParameterUseUnspec { interface SupplierWithNonNullableBound { @NullnessUnspecified E get(); } String x0( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified String> s) { // jspecify_nullness_not_enough_information return s.get(); } String x1( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified E> s) { // jspecify_nullness_not_enough_information return s.get(); } String x2( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound s) { // jspecify_nullness_not_enough_information return s.get(); } String x3( // jspecify_nullness_not_enough_information SupplierWithNonNullableBound<@NullnessUnspecified E> s) { // jspecify_nullness_not_enough_information return s.get(); } } jspecify-1.0.0/samples/UnspecifiedTypeVariableTypeArgumentForNonNullableParameter.java000066400000000000000000000017131464555076100314270ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; class UnspecifiedTypeVariableTypeArgumentForNonNullableParameter { @NullMarked interface ConsumerWithNonNullableBound { void accept(E e); } void x( // jspecify_nullness_not_enough_information ConsumerWithNonNullableBound c) { // jspecify_nullness_mismatch c.accept(null); } } jspecify-1.0.0/samples/UseOfTypeVariableAsTypeArgument.java000066400000000000000000000043521464555076100240360ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UseOfTypeVariableAsTypeArgument { interface Lib {} interface Super { Lib get(); } interface SubObject extends Super {} interface SubObjectUnspec extends Super<@NullnessUnspecified Object> {} interface SubObjectUnionNull extends Super<@Nullable Object> {} class Caller { Lib x0(SubObject s) { return s.get(); } Lib x1(SubObjectUnspec s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x2(SubObjectUnionNull s) { // jspecify_nullness_mismatch return s.get(); } Lib x3(Super s) { return s.get(); } Lib x4(Super<@NullnessUnspecified Object> s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x5(Super<@Nullable Object> s) { // jspecify_nullness_mismatch return s.get(); } Lib x6(Super s) { return s.get(); } Lib x7(Super s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x8(Super s) { // jspecify_nullness_mismatch return s.get(); } Lib x9(Super s) { // jspecify_nullness_mismatch return s.get(); } } } jspecify-1.0.0/samples/UseOfTypeVariableUnionNullAsTypeArgument.java000066400000000000000000000044771464555076100257120ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UseOfTypeVariableUnionNullAsTypeArgument { interface Lib {} interface Super { Lib<@Nullable T> get(); } interface SubObject extends Super {} interface SubObjectUnspec extends Super<@NullnessUnspecified Object> {} interface SubObjectUnionNull extends Super<@Nullable Object> {} class Caller { Lib x0(SubObject s) { // jspecify_nullness_mismatch return s.get(); } Lib x1(SubObjectUnspec s) { // jspecify_nullness_mismatch return s.get(); } Lib x2(SubObjectUnionNull s) { // jspecify_nullness_mismatch return s.get(); } Lib x3(Super s) { // jspecify_nullness_mismatch return s.get(); } Lib x4(Super<@NullnessUnspecified Object> s) { // jspecify_nullness_mismatch return s.get(); } Lib x5(Super<@Nullable Object> s) { // jspecify_nullness_mismatch return s.get(); } Lib x6(Super s) { // jspecify_nullness_mismatch return s.get(); } Lib x7(Super s) { // jspecify_nullness_mismatch return s.get(); } Lib x8(Super s) { // jspecify_nullness_mismatch return s.get(); } Lib x9(Super s) { // jspecify_nullness_mismatch return s.get(); } } } jspecify-1.0.0/samples/UseOfTypeVariableUnspecAsTypeArgument.java000066400000000000000000000046331464555076100252160ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class UseOfTypeVariableUnspecAsTypeArgument { interface Lib {} interface Super { Lib<@NullnessUnspecified T> get(); } interface SubObject extends Super {} interface SubObjectUnspec extends Super<@NullnessUnspecified Object> {} interface SubObjectUnionNull extends Super<@Nullable Object> {} class Caller { Lib x0(SubObject s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x1(SubObjectUnspec s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x2(SubObjectUnionNull s) { // jspecify_nullness_mismatch return s.get(); } Lib x3(Super s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x4(Super<@NullnessUnspecified Object> s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x5(Super<@Nullable Object> s) { // jspecify_nullness_mismatch return s.get(); } Lib x6(Super s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x7(Super s) { // jspecify_nullness_not_enough_information return s.get(); } Lib x8(Super s) { // jspecify_nullness_mismatch return s.get(); } Lib x9(Super s) { // jspecify_nullness_mismatch return s.get(); } } } jspecify-1.0.0/samples/WildcardBoundWithAnnotations.java000066400000000000000000000031721464555076100234460ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked interface WildcardBoundWithAnnotations { void use(Supplier s, Lib l); void useUnspec(Supplier s, Lib l); void useUnionNull(Supplier s, Lib l); default void x0(Supplier s, Lib l) { use(s, l); useUnspec(s, l); useUnionNull(s, l); } default void x1(Supplier s, Lib l) { // jspecify_nullness_not_enough_information use(s, l); // jspecify_nullness_not_enough_information useUnspec(s, l); useUnionNull(s, l); } default void x2(Supplier s, Lib l) { // jspecify_nullness_mismatch use(s, l); // jspecify_nullness_not_enough_information useUnspec(s, l); useUnionNull(s, l); } interface Supplier {} interface Lib {} } jspecify-1.0.0/samples/WildcardCapturesToBoundOfTypeParameterNotToTypeVariableItself.java000066400000000000000000000017411464555076100320410ustar00rootroot00000000000000/* * Copyright 2021 The JSpecify Authors. * * 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 org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked abstract class WildcardCapturesToBoundOfTypeParameterNotToTypeVariableItself< E extends @Nullable Object> { abstract E get(); E x(WildcardCapturesToBoundOfTypeParameterNotToTypeVariableItself p) { // jspecify_nullness_mismatch return p.get(); } } jspecify-1.0.0/samples/annotatedBoundsOfWildcard/000077500000000000000000000000001464555076100220745ustar00rootroot00000000000000jspecify-1.0.0/samples/annotatedBoundsOfWildcard/annotatedboundsofwildcard/000077500000000000000000000000001464555076100273235ustar00rootroot00000000000000AnnotatedBoundsOfWildcard.java000066400000000000000000000110431464555076100351350ustar00rootroot00000000000000jspecify-1.0.0/samples/annotatedBoundsOfWildcard/annotatedboundsofwildcard/* * Copyright 2020 The JSpecify Authors. * * 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. */ package annotatedboundsofwildcard; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked public class AnnotatedBoundsOfWildcard { public void superAsIs( // jspecify_nullness_not_enough_information Test a) {} public void superNotNull(Test a) {} public void superNullable( // jspecify_nullness_not_enough_information Test a) {} public void extendsAsIs( Test a) {} public void extendsNotNull(Test a) {} public void extendsNullable( Test a) {} public void noBounds( Test< ? extends @NullnessUnspecified Object, ? extends @NullnessUnspecified Object, ? extends @NullnessUnspecified Object> a) {} } class Base {} class Derived extends Base {} @NullMarked class Test {} @NullMarked class Use { public void main( Test aNotNullNotNullNotNull, // jspecify_nullness_not_enough_information Test aNotNullNotNullNull, Test aNotNullNullNotNull, // jspecify_nullness_not_enough_information Test aNotNullNullNull, // Test aObjectNotNullNotNullNotNull, // jspecify_nullness_not_enough_information Test aObjectNotNullNotNullNull, Test aObjectNotNullNullNotNull, // jspecify_nullness_not_enough_information Test aObjectNotNullNullNull, // AnnotatedBoundsOfWildcard b) { // jspecify_nullness_mismatch b.superAsIs(aObjectNotNullNotNullNotNull); // jspecify_nullness_mismatch b.superAsIs(aObjectNotNullNotNullNull); // jspecify_nullness_not_enough_information b.superAsIs(aObjectNotNullNullNotNull); b.superAsIs(aObjectNotNullNullNull); b.superNotNull(aObjectNotNullNotNullNotNull); b.superNotNull(aObjectNotNullNotNullNull); b.superNotNull(aObjectNotNullNullNotNull); b.superNotNull(aObjectNotNullNullNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNotNullNotNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNotNullNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNullNotNull); // jspecify_nullness_mismatch b.superNullable(aObjectNotNullNullNull); b.extendsAsIs(aNotNullNotNullNotNull); // jspecify_nullness_not_enough_information b.extendsAsIs(aNotNullNotNullNull); b.extendsAsIs(aNotNullNullNotNull); // jspecify_nullness_not_enough_information b.extendsAsIs(aNotNullNullNull); b.extendsNotNull(aNotNullNotNullNotNull); // jspecify_nullness_mismatch b.extendsNotNull(aNotNullNotNullNull); // jspecify_nullness_mismatch b.extendsNotNull(aNotNullNullNotNull); // jspecify_nullness_mismatch b.extendsNotNull(aNotNullNullNull); b.extendsNullable(aNotNullNotNullNotNull); b.extendsNullable(aNotNullNotNullNull); b.extendsNullable(aNotNullNullNotNull); b.extendsNullable(aNotNullNullNull); b.noBounds(aNotNullNotNullNotNull); // jspecify_nullness_not_enough_information b.noBounds(aNotNullNotNullNull); // jspecify_nullness_not_enough_information b.noBounds(aNotNullNullNotNull); // jspecify_nullness_not_enough_information b.noBounds(aNotNullNullNull); } } jspecify-1.0.0/samples/defaults/000077500000000000000000000000001464555076100166145ustar00rootroot00000000000000jspecify-1.0.0/samples/defaults/defaults/000077500000000000000000000000001464555076100204235ustar00rootroot00000000000000jspecify-1.0.0/samples/defaults/defaults/Defaults.java000066400000000000000000000045111464555076100230360ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package defaults; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked public class Defaults { // jspecify_nullness_mismatch public Foo defaultField = null; public @Nullable Foo field = null; public Foo everythingNotNullable(Foo x) { // jspecify_nullness_mismatch return null; } public @Nullable Foo everythingNullable(@Nullable Foo x) { return null; } public @NullnessUnspecified Foo everythingUnknown(@NullnessUnspecified Foo x) { // jspecify_nullness_not_enough_information return null; } public @Nullable Foo mixed(Foo x) { return null; } public Foo explicitlyNullnessUnspecified(@NullnessUnspecified Foo x) { // jspecify_nullness_mismatch return null; } } class Foo { public Object foo() { // jspecify_nullness_not_enough_information return null; } } @NullMarked class Instances { static final Defaults DEFAULTS = new Defaults(); static final Foo FOO = new Foo(); } class Use { static void main() { Defaults a = Instances.DEFAULTS; Foo x = Instances.FOO; // jspecify_nullness_mismatch a.everythingNotNullable(null).foo(); a.everythingNotNullable(x).foo(); // jspecify_nullness_mismatch a.everythingNullable(null).foo(); // jspecify_nullness_not_enough_information a.everythingUnknown(null).foo(); // jspecify_nullness_mismatch a.mixed(null).foo(); // jspecify_nullness_mismatch a.mixed(x).foo(); a.explicitlyNullnessUnspecified(x).foo(); // jspecify_nullness_not_enough_information a.explicitlyNullnessUnspecified(null).foo(); a.defaultField.foo(); // jspecify_nullness_mismatch a.field.foo(); } } jspecify-1.0.0/samples/fullyQualified/000077500000000000000000000000001464555076100177645ustar00rootroot00000000000000jspecify-1.0.0/samples/fullyQualified/fullyqualified/000077500000000000000000000000001464555076100230035ustar00rootroot00000000000000jspecify-1.0.0/samples/fullyQualified/fullyqualified/sub/000077500000000000000000000000001464555076100235745ustar00rootroot00000000000000jspecify-1.0.0/samples/fullyQualified/fullyqualified/sub/Annotation.java000066400000000000000000000012321464555076100265470ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package fullyqualified.sub; public @interface Annotation {} jspecify-1.0.0/samples/fullyQualified/fullyqualified/sub/Caller.java000066400000000000000000000015121464555076100256400ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package fullyqualified.sub; class Caller { Caller( fullyqualified.sub.Clazz clazz, fullyqualified.sub.Enumeration enumeration, fullyqualified.sub.Interface iface, fullyqualified.sub.Annotation annotation) {} } jspecify-1.0.0/samples/fullyQualified/fullyqualified/sub/Clazz.java000066400000000000000000000012201464555076100255150ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package fullyqualified.sub; public class Clazz {} jspecify-1.0.0/samples/fullyQualified/fullyqualified/sub/Enumeration.java000066400000000000000000000012251464555076100267250ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package fullyqualified.sub; public enum Enumeration {} jspecify-1.0.0/samples/fullyQualified/fullyqualified/sub/Interface.java000066400000000000000000000012301464555076100263330ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package fullyqualified.sub; public interface Interface {} jspecify-1.0.0/samples/ignoreAnnotations/000077500000000000000000000000001464555076100205065ustar00rootroot00000000000000jspecify-1.0.0/samples/ignoreAnnotations/ignoreannotations/000077500000000000000000000000001464555076100242475ustar00rootroot00000000000000jspecify-1.0.0/samples/ignoreAnnotations/ignoreannotations/IgnoreAnnotations.java000066400000000000000000000041071464555076100305550ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package ignoreannotations; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked public class IgnoreAnnotations { public @Nullable Derived field = null; public @Nullable Derived foo(Derived x, @NullnessUnspecified Base y) { return null; } public Derived everythingNotNullable(Derived x) { // jspecify_nullness_mismatch return null; } public @Nullable Derived everythingNullable(@Nullable Derived x) { return null; } public @NullnessUnspecified Derived everythingUnknown(@NullnessUnspecified Derived x) { // jspecify_nullness_not_enough_information return null; } } class Base { void foo() {} } class Derived extends Base {} @NullMarked class Instances { static final IgnoreAnnotations IGNORE_ANNOTATIONS = new IgnoreAnnotations(); static final Derived DERIVED = new Derived(); } class Use { static void main() { IgnoreAnnotations a = Instances.IGNORE_ANNOTATIONS; Derived x = Instances.DERIVED; // jspecify_nullness_mismatch a.foo(x, null).foo(); // jspecify_nullness_mismatch a.foo(null, x).foo(); // jspecify_nullness_mismatch a.field.foo(); // jspecify_nullness_mismatch a.everythingNotNullable(null).foo(); a.everythingNotNullable(x).foo(); // jspecify_nullness_mismatch a.everythingNullable(null).foo(); // jspecify_nullness_not_enough_information a.everythingUnknown(null).foo(); } } jspecify-1.0.0/samples/implementWithNullableTypeArgument/000077500000000000000000000000001464555076100236575ustar00rootroot00000000000000jspecify-1.0.0/samples/implementWithNullableTypeArgument/implementwithnullabletypeargument/000077500000000000000000000000001464555076100327315ustar00rootroot00000000000000MyFunction.java000066400000000000000000000015711464555076100356140ustar00rootroot00000000000000jspecify-1.0.0/samples/implementWithNullableTypeArgument/implementwithnullabletypeargument/* * Copyright 2022 The JSpecify Authors. * * 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. */ package implementwithnullabletypeargument; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked interface MyFunction extends SuperFunction { @Override T apply(F f); } SuperFunction.java000066400000000000000000000015201464555076100363170ustar00rootroot00000000000000jspecify-1.0.0/samples/implementWithNullableTypeArgument/implementwithnullabletypeargument/* * Copyright 2022 The JSpecify Authors. * * 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. */ package implementwithnullabletypeargument; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked interface SuperFunction { T apply(F f); } jspecify-1.0.0/samples/implementWithNullableTypeArgument/implementwithnullabletypeargument/User.java000066400000000000000000000016311464555076100345130ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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. */ package implementwithnullabletypeargument; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class User { interface NullableObjectFunction extends MyFunction<@Nullable Object, @Nullable Object> { @Override @Nullable Object apply(@Nullable Object f); } } jspecify-1.0.0/samples/memberSelectNonExpression/000077500000000000000000000000001464555076100221475ustar00rootroot00000000000000jspecify-1.0.0/samples/memberSelectNonExpression/memberselectnonexpression/000077500000000000000000000000001464555076100274515ustar00rootroot00000000000000MemberSelectNonExpressions.java000066400000000000000000000050141464555076100355220ustar00rootroot00000000000000jspecify-1.0.0/samples/memberSelectNonExpression/memberselectnonexpression/* * Copyright 2022 The JSpecify Authors. * * 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. */ package memberselectnonexpression; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; class MemberSelectNonExpressions { @NullMarked static class NullMarkedUsage { static void x0() { int x; Static.x(); x = Static.x; MemberSelectNonExpressions.Static.x(); x = MemberSelectNonExpressions.Static.x; memberselectnonexpression.MemberSelectNonExpressions.Static.x(); x = memberselectnonexpression.MemberSelectNonExpressions.Static.x; } static void x1() { StaticParameterized s0; MemberSelectNonExpressions.StaticParameterized s1; memberselectnonexpression.MemberSelectNonExpressions.StaticParameterized s2; StaticParameterized.Inner i0; MemberSelectNonExpressions.StaticParameterized.Inner i1; memberselectnonexpression.MemberSelectNonExpressions.StaticParameterized.Inner i2; } } static class NotNullMarkedUsage { static void x0() { int x; Static.x(); x = Static.x; MemberSelectNonExpressions.Static.x(); x = MemberSelectNonExpressions.Static.x; memberselectnonexpression.MemberSelectNonExpressions.Static.x(); x = memberselectnonexpression.MemberSelectNonExpressions.Static.x; } static void x1() { StaticParameterized s0; MemberSelectNonExpressions.StaticParameterized s1; memberselectnonexpression.MemberSelectNonExpressions.StaticParameterized s2; StaticParameterized.Inner i0; MemberSelectNonExpressions.StaticParameterized.Inner i1; memberselectnonexpression.MemberSelectNonExpressions.StaticParameterized.Inner i2; } } static class Static { static void x() {} static int x; } static class StaticParameterized { static void x() {} static int x; class Inner {} } } jspecify-1.0.0/samples/nonPlatformTypeParameter/000077500000000000000000000000001464555076100220075ustar00rootroot00000000000000jspecify-1.0.0/samples/nonPlatformTypeParameter/nonplatformtypeparameter/000077500000000000000000000000001464555076100271515ustar00rootroot00000000000000NonPlatformTypeParameter.java000066400000000000000000000031061464555076100346770ustar00rootroot00000000000000jspecify-1.0.0/samples/nonPlatformTypeParameter/nonplatformtypeparameter/* * Copyright 2020 The JSpecify Authors. * * 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. */ package nonplatformtypeparameter; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; public class NonPlatformTypeParameter { public void foo(T t) {} public void bar(E e) {} } class Test {} @NullMarked class Use { public void main( NonPlatformTypeParameter<@Nullable Object> a1, NonPlatformTypeParameter a2, T x) { a1.foo(null); a1.<@Nullable Test>bar(null); /* * TODO(cpovirk): In similar existing JSpecify samples, we mark the following line as * not-enough-information. However, similar existing Kotlin samples treat it as a mismatch. We * need to resolve how defaulting works on type-variable usages. */ // a1.bar(null); a1.bar(x); // TODO(cpovirk): See the TODO above. // a2.foo(null); a2.<@Nullable Test>bar(null); // TODO(cpovirk): See the TODO above. // a2.bar(null); a2.bar(x); } } jspecify-1.0.0/samples/nullnessUnspecifiedTypeParameter/000077500000000000000000000000001464555076100235325ustar00rootroot00000000000000jspecify-1.0.0/samples/nullnessUnspecifiedTypeParameter/nullnessunspecifiedtypeparameter/000077500000000000000000000000001464555076100324175ustar00rootroot00000000000000NullnessUnspecifiedTypeParameter.java000066400000000000000000000031711464555076100416720ustar00rootroot00000000000000jspecify-1.0.0/samples/nullnessUnspecifiedTypeParameter/nullnessunspecifiedtypeparameter/* * Copyright 2020 The JSpecify Authors. * * 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. */ package nullnessunspecifiedtypeparameter; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked public class NullnessUnspecifiedTypeParameter { public void foo(T t) {} public void bar(Test s, T t) {} } class Test {} @NullMarked class Instances { static final NullnessUnspecifiedTypeParameter A1 = new NullnessUnspecifiedTypeParameter<>(); // jspecify_nullness_mismatch static final NullnessUnspecifiedTypeParameter<@Nullable Object> A2 = new NullnessUnspecifiedTypeParameter<>(); static final Test X = new Test(); } class Use extends Instances { void main() { // jspecify_nullness_mismatch A1.foo(null); A1.foo(1); // jspecify_nullness_mismatch A2.foo(null); A2.foo(1); // jspecify_nullness_mismatch A1.bar(null, null); // jspecify_nullness_mismatch A1.bar(X, null); A1.bar(X, 1); // jspecify_nullness_mismatch A2.bar(null, null); // jspecify_nullness_mismatch A2.bar(X, null); A2.bar(X, 1); } } jspecify-1.0.0/samples/packageDefault/000077500000000000000000000000001464555076100177055ustar00rootroot00000000000000jspecify-1.0.0/samples/packageDefault/packagedefault/000077500000000000000000000000001464555076100226455ustar00rootroot00000000000000jspecify-1.0.0/samples/packageDefault/packagedefault/Bar.java000066400000000000000000000014201464555076100242110ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package packagedefault; import org.jspecify.annotations.Nullable; class Bar { Object x(@Nullable Object o) { // test:cannot-convert:Object? to Object! return o; } } jspecify-1.0.0/samples/packageDefault/packagedefault/package-info.java000066400000000000000000000012571464555076100260410ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ @NullMarked package packagedefault; import org.jspecify.annotations.NullMarked; jspecify-1.0.0/samples/selfType/000077500000000000000000000000001464555076100166005ustar00rootroot00000000000000jspecify-1.0.0/samples/selfType/selftype/000077500000000000000000000000001464555076100204335ustar00rootroot00000000000000jspecify-1.0.0/samples/selfType/selftype/SelfType.java000066400000000000000000000034521464555076100230350ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package selftype; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked public class SelfType> { public void foo(T t) {} } // jspecify_nullness_not_enough_information class B extends SelfType {} @NullMarked class C> extends SelfType {} // jspecify_nullness_not_enough_information class AK extends SelfType {} // test:cannot-convert:AK? to SelfType! class AKN extends SelfType<@Nullable AK> {} class BK extends B {} // jspecify_nullness_not_enough_information class CK extends C {} @NullMarked // test:cannot-convert:CK? to C! abstract class Super extends C<@Nullable CK> { abstract AK ak(); abstract AKN akn(); abstract BK bk(); abstract CK ck(); abstract CKN ckn(); } abstract class CKN extends Super { public void main() { ak().foo(ak()); // test:cannot-convert:null? to AK! ak().foo(null); // test:cannot-convert:null? to AK! akn().foo(null); bk().foo(bk()); // test:cannot-convert:null? to B! bk().foo(null); ck().foo(ck()); // test:cannot-convert:null? to CK! ck().foo(null); // test:cannot-convert:null? to CK! ckn().foo(null); } } jspecify-1.0.0/samples/simple/000077500000000000000000000000001464555076100162765ustar00rootroot00000000000000jspecify-1.0.0/samples/simple/simple/000077500000000000000000000000001464555076100175675ustar00rootroot00000000000000jspecify-1.0.0/samples/simple/simple/Simple.java000066400000000000000000000025101464555076100216610ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package simple; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked public class Simple { public @Nullable Derived field = null; public @Nullable Derived foo(Derived x, @NullnessUnspecified Base y) { return null; } public Derived bar() { // jspecify_nullness_mismatch return null; } } class Base {} class Derived extends Base { void foo() {} } @NullMarked class Use { public static void main(Simple a, Derived x) { // jspecify_nullness_mismatch a.foo(x, null).foo(); // jspecify_nullness_mismatch a.foo(null, x).foo(); a.bar().foo(); // jspecify_nullness_mismatch a.field.foo(); } } jspecify-1.0.0/samples/typeArgumentsFromParameterBounds/000077500000000000000000000000001464555076100235145ustar00rootroot00000000000000jspecify-1.0.0/samples/typeArgumentsFromParameterBounds/typeargumentsfromparameterbounds/000077500000000000000000000000001464555076100324235ustar00rootroot00000000000000TypeArgumentsFromParameterBounds.java000066400000000000000000000043411464555076100416600ustar00rootroot00000000000000jspecify-1.0.0/samples/typeArgumentsFromParameterBounds/typeargumentsfromparameterbounds/* * Copyright 2020 The JSpecify Authors. * * 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. */ package typeargumentsfromparameterbounds; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked public class TypeArgumentsFromParameterBounds< T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> {} @NullMarked class A { public void bar(TypeArgumentsFromParameterBounds a) {} } class B { // jspecify_nullness_not_enough_information public void bar(TypeArgumentsFromParameterBounds a) {} } class Test {} @NullMarked class Use { public static void main( TypeArgumentsFromParameterBounds aNotNullNotNullNotNull, // jspecify_nullness_not_enough_information TypeArgumentsFromParameterBounds aNotNullNotNullNull, TypeArgumentsFromParameterBounds aNotNullNullNotNull, // jspecify_nullness_not_enough_information TypeArgumentsFromParameterBounds aNotNullNullNull, A a, B b) { a.bar(aNotNullNotNullNotNull); // jspecify_nullness_mismatch a.bar(aNotNullNotNullNull); // jspecify_nullness_mismatch a.bar(aNotNullNullNotNull); // jspecify_nullness_mismatch a.bar(aNotNullNullNull); // jspecify_nullness_not_enough_information b.bar(aNotNullNotNullNotNull); // jspecify_nullness_not_enough_information b.bar(aNotNullNotNullNull); // jspecify_nullness_not_enough_information b.bar(aNotNullNullNotNull); // jspecify_nullness_not_enough_information b.bar(aNotNullNullNull); } } jspecify-1.0.0/samples/typeParameterBounds/000077500000000000000000000000001464555076100210025ustar00rootroot00000000000000jspecify-1.0.0/samples/typeParameterBounds/typeparameterbounds/000077500000000000000000000000001464555076100250775ustar00rootroot00000000000000jspecify-1.0.0/samples/typeParameterBounds/typeparameterbounds/TypeParameterBounds.java000066400000000000000000000032541464555076100317030ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package typeparameterbounds; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked class A { public void foo(@NullnessUnspecified T t) {} public void bar(E e) {} } @NullMarked class B { public void foo(T t) {} public void bar(E e) {} } class Test {} @NullMarked public class TypeParameterBounds { void main( // jspecify_nullness_mismatch A<@Nullable Object> a1, A a2, B<@Nullable Object> b1, B b2, T x) { a1.foo(null); // jspecify_nullness_mismatch a1.<@Nullable T>bar(null); a1.bar(x); // jspecify_nullness_not_enough_information a2.foo(null); // jspecify_nullness_mismatch a2.<@Nullable T>bar(null); a2.bar(x); // jspecify_nullness_mismatch b1.foo(null); // jspecify_nullness_mismatch b1.<@Nullable T>bar(null); b1.bar(x); // jspecify_nullness_mismatch b2.foo(null); // jspecify_nullness_mismatch b2.<@Nullable T>bar(null); b2.bar(x); } } jspecify-1.0.0/samples/wildcardsWithDefault/000077500000000000000000000000001464555076100211225ustar00rootroot00000000000000jspecify-1.0.0/samples/wildcardsWithDefault/wildcardswithdefault/000077500000000000000000000000001464555076100253375ustar00rootroot00000000000000jspecify-1.0.0/samples/wildcardsWithDefault/wildcardswithdefault/WildcardsWithDefault.java000066400000000000000000000035701464555076100322640ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ package wildcardswithdefault; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import org.jspecify.annotations.NullnessUnspecified; @NullMarked public class WildcardsWithDefault { public void noBoundsNotNull(A a) {} public void noBoundsNullable( A a) {} } @NullMarked class A {} @NullMarked class Use { public static void main( A aNotNullNotNullNotNull, // jspecify_nullness_not_enough_information A aNotNullNotNullNull, A aNotNullNullNotNull, // jspecify_nullness_not_enough_information A aNotNullNullNull, WildcardsWithDefault b) { b.noBoundsNotNull(aNotNullNotNullNotNull); b.noBoundsNotNull(aNotNullNotNullNull); b.noBoundsNotNull(aNotNullNullNotNull); b.noBoundsNotNull(aNotNullNullNull); b.noBoundsNullable(aNotNullNotNullNotNull); b.noBoundsNullable(aNotNullNotNullNull); b.noBoundsNullable(aNotNullNullNotNull); b.noBoundsNullable(aNotNullNullNull); } } jspecify-1.0.0/settings.gradle000066400000000000000000000020051464555076100163560ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ plugins { id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' } // Project name is read-only in build scripts, and defaults to directory name. rootProject.name = "jspecify" include 'conformance-tests' // Lets projects within the build depend on each other by module name. // See https://docs.gradle.org/current/userguide/composite_builds.html#included_build_declaring_substitutions includeBuild('.') jspecify-1.0.0/src/000077500000000000000000000000001464555076100141305ustar00rootroot00000000000000jspecify-1.0.0/src/integrationTest/000077500000000000000000000000001464555076100173135ustar00rootroot00000000000000jspecify-1.0.0/src/integrationTest/java/000077500000000000000000000000001464555076100202345ustar00rootroot00000000000000jspecify-1.0.0/src/integrationTest/java/org/000077500000000000000000000000001464555076100210235ustar00rootroot00000000000000jspecify-1.0.0/src/integrationTest/java/org/jspecify/000077500000000000000000000000001464555076100226375ustar00rootroot00000000000000jspecify-1.0.0/src/integrationTest/java/org/jspecify/annotations/000077500000000000000000000000001464555076100251745ustar00rootroot00000000000000jspecify-1.0.0/src/integrationTest/java/org/jspecify/annotations/NullMarkedTest.java000066400000000000000000000050771464555076100307460ustar00rootroot00000000000000/* * Copyright 2018-2020 The JSpecify Authors. * * 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. */ package org.jspecify.annotations; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assumptions.assumeFalse; import static org.junit.jupiter.api.Assumptions.assumeTrue; import java.lang.annotation.ElementType; import java.lang.annotation.Target; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import java.util.stream.Collectors; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @DisplayName("@NullMarked") class NullMarkedTest { static boolean isJava8() { String version = System.getProperty("java.version"); return version.startsWith("1.8"); } static Set loadTargets() { return Arrays.stream(NullMarked.class.getAnnotation(Target.class).value()) .map(ElementType::toString) .collect(Collectors.toSet()); } @Nested @DisplayName("with Java 8") static class WithJava8 { @BeforeEach void assumeJava8() { assumeTrue(isJava8()); } @Test void onlyBasicReflectionWorks() { Object unused = NullMarked.class.getMethods(); /* * But reading the *annotations* on NullMarked would result in an exception: Those annotations * include @Target, which refers to MODULE, which doesn't exist under Java 8. * * (It happens to fail with ArrayStoreException.) */ assertThrows(ArrayStoreException.class, NullMarked.class::getAnnotations); } } @Nested @DisplayName("with Java 9+") static class WithJava9OrLater { @BeforeEach void assumeJava9OrLater() { assumeFalse(isJava8()); } @Test void annotationIncludesModuleAsTarget() { Set targets = loadTargets(); assertEquals( new HashSet(Arrays.asList("TYPE", "METHOD", "CONSTRUCTOR", "PACKAGE", "MODULE")), targets); } } } jspecify-1.0.0/src/java9/000077500000000000000000000000001464555076100151425ustar00rootroot00000000000000jspecify-1.0.0/src/java9/java/000077500000000000000000000000001464555076100160635ustar00rootroot00000000000000jspecify-1.0.0/src/java9/java/module-info.java000066400000000000000000000012311464555076100211410ustar00rootroot00000000000000/* * Copyright 2020 The JSpecify Authors. * * 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. */ module org.jspecify { exports org.jspecify.annotations; } jspecify-1.0.0/src/main/000077500000000000000000000000001464555076100150545ustar00rootroot00000000000000jspecify-1.0.0/src/main/java/000077500000000000000000000000001464555076100157755ustar00rootroot00000000000000jspecify-1.0.0/src/main/java/org/000077500000000000000000000000001464555076100165645ustar00rootroot00000000000000jspecify-1.0.0/src/main/java/org/jspecify/000077500000000000000000000000001464555076100204005ustar00rootroot00000000000000jspecify-1.0.0/src/main/java/org/jspecify/annotations/000077500000000000000000000000001464555076100227355ustar00rootroot00000000000000jspecify-1.0.0/src/main/java/org/jspecify/annotations/NonNull.java000066400000000000000000000075441464555076100251770ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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. */ package org.jspecify.annotations; import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; /** * Indicates that the annotated type * usage (commonly a parameter type or return type) is considered to exclude {@code null} * as a value; rarely needed within {@linkplain NullMarked null-marked} code. * *

This annotation serves two primary purposes: * *

    *
  • To mark any sporadic non-null type usages inside a scope that is not ready to be fully * {@link NullMarked} yet. *
  • To perform a non-null projection of a type variable, explained below. *
* *

For a comprehensive introduction to JSpecify, please see jspecify.org. * *

Non-null projection

* *

In the following example, {@code MyOptional}'s type parameter {@code T} accepts only non-null * type arguments, but {@code MyList}'s type parameter {@code E} will accept either a non-null or * nullable type argument. * *

{@code
 * // All the below is null-marked code
 *
 * class MyOptional { … }
 *
 * interface MyList {
 *   // Returns the first non-null element, if such element exists.
 *   MyOptional firstNonNull() { … } // problem here!
 * }
 *
 * MyList<@Nullable String> maybeNulls = …
 * MyList nonNulls = …
 * }
* *

Because {@code MyOptional} accepts only non-null type arguments, we need both {@code * maybeNulls.firstNonNull()} and {@code nonNulls.firstNonNull()} to produce the same return type: * {@code MyOptional!} (see notation). * However, as specified above, they won't do that. In fact, there is a problem with the {@code * firstNonNull} signature, since the type argument {@code String?} would not meet the requirements * of {@code MyOptional}'s type parameter. * *

The solution is to project the type argument to its non-null counterpart: * *

{@code
 * // Returns the first non-null element, if such element exists.
 * MyOptional<@NonNull E> firstNonNull() { … } // problem fixed!
 * }
* *

Here, {@code @NonNull E} selects the non-null form of the type argument, whether it was * already non-null or not, which is just what we need in this scenario. * *

If {@code E} has a non-null upper bound, then the apparent projection {@code @NonNull E} is * redundant but harmless. * *

Nullable projection serves the equivalent purpose in * the opposite direction, and is far more commonly useful. * *

If a type variable has all its usages being projected in one direction or the other, it * should be given a non-null upper bound, and any non-null projections can then be removed. * *

Where it is applicable

* *

{@code @NonNull} is applicable in all the same * locations as {@link Nullable}. */ @Documented @Target(TYPE_USE) @Retention(RUNTIME) public @interface NonNull {} jspecify-1.0.0/src/main/java/org/jspecify/annotations/NullMarked.java000066400000000000000000000146031464555076100256420ustar00rootroot00000000000000/* * Copyright 2018-2020 The JSpecify Authors. * * 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. */ package org.jspecify.annotations; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.MODULE; import static java.lang.annotation.ElementType.PACKAGE; import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; /** * Indicates that the annotated element and the code transitively {@linkplain * javax.lang.model.element.Element#getEnclosedElements() enclosed} within it are null-marked * code: there, type usages are generally considered to exclude {@code null} as a value unless * specified otherwise. Using this annotation avoids the need to write {@link NonNull @NonNull} many * times throughout your code. * *

For a comprehensive introduction to JSpecify, please see jspecify.org. * *

Effects of being null-marked

* *

Within null-marked code, as a general rule, a type usage is considered non-null (to * exclude {@code null} as a value) unless explicitly annotated as {@link Nullable}. However, there * are several special cases to address. * *

Special cases

* *

Within null-marked code: * *

    *
  • We might expect the type represented by a wildcard (like the {@code ?} in {@code * List}) to be non-null, but it isn't necessarily. It's non-null only if it {@code * extends} a non-null type (like in {@code List}), or if the class * in use accepts only non-null type arguments (such as if {@code List} were declared as * {@code class List}). But if {@code List} does accept nullable type * arguments, then the wildcards seen in {@code List} and {@code List} must * include {@code null}, because they have no "upper bound". (Why?) *
      *
    • Conversely, a type parameter is always considered to have an upper bound; when * none is given explicitly, {@code Object} is filled in by the compiler. The example * {@code class MyList} is interpreted identically to {@code class MyList}: in both cases the type argument in {@code MyList<@Nullable Foo>} is * out-of-bounds, so the list elements are always non-null. (Why?) *
    *
  • Otherwise, being null-marked has no consequence for any type usage where {@code @Nullable} * and {@code @NonNull} are not applicable, * such as the root type of a local variable declaration. *
  • When a type variable has a nullable upper bound, such as the {@code E} in {@code class * Foo}), an unannotated usage of this type variable is not * considered nullable, non-null, or even of "unspecified" nullness. Rather it has * parametric nullness. In order to support both nullable and non-null type arguments * safely, the {@code E} type itself must be handled strictly: as if nullable when * "read from", but as if non-null when "written to". (Contrast with {@code class Foo}, where usages of {@code E} are simply non-null, just like usages of {@code * String} are.) *
  • By using {@link NullUnmarked}, an element within null-marked code can be excluded and made * null-unmarked, exactly as if there were no enclosing {@code @NullMarked} element at all. *
* *

Where it can be used

* * {@code @NullMarked} and {@link NullUnmarked @NullUnmarked} can be used on any package, class, * method, or constructor declaration; {@code @NullMarked} can be used on a module declaration as * well. Special considerations: * *
    *
  • To apply this annotation to an entire (single) package, create a {@code * package-info.java} file there. This is recommended so that newly-created classes will * be null-marked by default. This annotation has no effect on "subpackages". Warning: * if the package does not belong to a module, be very careful: it can easily happen that * different versions of the package-info file are seen and used in different circumstances, * causing the same classes to be interpreted inconsistently. For example, a package-info file * from a {@code test} source path might hide the corresponding one from the {@code main} * source path, or generated code might be compiled without seeing a package-info file at all. *
  • Although Java permits it to be applied to a record component declaration (as in * {@code record Foo(@NullMarked String bar) {...}}), this annotation has no meaning when used * in that way. *
  • Applying this annotation to an instance method of a generic class is * acceptable, but is not recommended because it can lead to some confusing situations. *
  • An advantage of Java modules is that you can make a lot of code null-marked with * just a single annotation (before the {@code module} keyword). {@link NullUnmarked} is not * supported on modules, since it's already the default. *
  • If both {@code @NullMarked} and {@code @NullUnmarked} appear together on the same element, * neither one is recognized. *
*/ @Documented @Target({MODULE, PACKAGE, TYPE, METHOD, CONSTRUCTOR}) @Retention(RUNTIME) public @interface NullMarked {} jspecify-1.0.0/src/main/java/org/jspecify/annotations/NullUnmarked.java000066400000000000000000000076621464555076100262140ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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. */ package org.jspecify.annotations; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PACKAGE; import static java.lang.annotation.ElementType.TYPE; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Indicates that the annotated element and the code transitively {@linkplain * javax.lang.model.element.Element#getEnclosedElements() enclosed} within it is null-unmarked * code: there, type usages generally have unspecified nullness unless explicitly * annotated otherwise. * *

This annotation's purpose is to ease migration of a large existing codebase to null-marked * status. It makes it possible to "flip the default" for new code added to a class or package even * before that class or package has been fully migrated. Since new code is the most important code * to analyze, this is strongly recommended as a temporary measure whenever necessary. However, once * a codebase has been fully migrated it would be appropriate to ban use of this annotation. * *

For a comprehensive introduction to JSpecify, please see jspecify.org. * *

Null-marked and null-unmarked code

* *

{@link NullMarked} and this annotation work as a pair to include and exclude sections of code * from null-marked status (respectively). Specifically, code is considered null-marked if the most * narrowly enclosing element annotated with either of these two annotations exists and is annotated * with {@code @NullMarked}. * *

Otherwise it is considered null-unmarked. This can happen in two ways: either it is more * narrowly enclosed by a {@code @NullUnmarked}-annotated element than by any * {@code @NullMarked}-annotated element, or neither annotation is present on any enclosing element. * No distinction is made between these cases. * *

The effects of being null-marked are described in the Effects section of {@code NullMarked}. * *

Unspecified nullness

* *

Within null-unmarked code, a type usage with no nullness annotation has unspecified * nullness (Why?). This means that, while there is always * some correct way to annotate it for nullness, that information is missing: we do not * know whether it includes or excludes {@code null} as a value. In such a case, tools can vary * widely in how strict or lenient their enforcement is, or might make it configurable. * *

For more, please see this more comprehensive * discussion of unspecified nullness. * *

There is no way for an individual type usage within null-marked code to have unspecified * nullness. (Why?) * *

Where it can be used

* * The information in the Where it can be used section of {@code * NullMarked} applies as well to this annotation. */ // TODO(kevinb9n): word the middle section better with good words @Documented @Retention(RetentionPolicy.RUNTIME) @Target({PACKAGE, TYPE, METHOD, CONSTRUCTOR}) public @interface NullUnmarked {} jspecify-1.0.0/src/main/java/org/jspecify/annotations/Nullable.java000066400000000000000000000201631464555076100253400ustar00rootroot00000000000000/* * Copyright 2018-2020 The JSpecify Authors. * * 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. */ package org.jspecify.annotations; import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; /** * Indicates that the annotated type * usage (commonly a parameter type or return type) is considered to include {@code null} as a * value. * *

Example usages: * *

{@code
 * @Nullable String field;
 *
 * @Nullable String getField() { return field; }
 *
 * void setField(@Nullable String value) { field = value; }
 *
 * List<@Nullable String> getList() { … }
 * }
* *

For a comprehensive introduction to JSpecify, please see jspecify.org. * *

Meaning per each kind of type usage

* *

The essential meaning of this annotation is always the same: the type it annotates is * considered to include {@code null} as a value. But this may affect your code a little differently * based on the kind of type usage involved. * *

    *
  • On a parameter type: The {@code setField} method (at top) permissively accepts a * "string-or-null", meaning that it is okay to pass an actual string, or to pass {@code * null}. (This doesn't guarantee that passing {@code null} won't produce an exception at * runtime, but it should be much less likely.) This also applies to the type of a lambda * expression parameter, if that type is given explicitly (otherwise its nullness must be * inferred from context). *
  • On a method return type: The {@code getField} method returns a "string-or-null", so * while the caller might get a string back, it should also address the possibility of getting * {@code null} instead. (This doesn't guarantee there is any circumstance in which {@code * null} will actually be returned.) *
  • On a field type: The {@code field} field has the type "string-or-null", so at times * it might hold a string, and at times it might hold {@code null}. (Of course, every field of * a reference type originally holds {@code null}, but as long as the class ensures * that its uninitialized states can't be observed, it's appropriate to overlook that fact.) *
  • On a type argument: A type usage of "nullable string" appears within the * compound type {@code List<@Nullable String>}. No matter how this type is used (return type, * etc.), this means the same thing: every appearance of {@code E} in {@code List}'s member * signatures will be considered nullable. For a list, this means it may contain null * elements. If the list reference itself might be null as well, we can write * {@code @Nullable List<@Nullable String>}, a "nullable list of nullable strings". *
  • On the upper bound of a type parameter: For example, as seen in {@code class List}. This means that a type argument supplied for that type * parameter is permitted to be nullable if desired: {@code List<@Nullable String>}. (A * non-null type argument, as in {@code List}, is permitted either way.) *
  • On a usage of a type variable: A type parameter, like the {@code E} in {@code * interface List}, defines a "type variable" of the same name, usable only within * the scope of the declaring API element. In any example using {@code String} above, a type * variable like {@code E} might appear instead. {@code @Nullable} continues to mean "or null" * as always, but notably, this works without regard to whether the type argument is * already nullable. For example, suppose that {@code class Foo} has a method {@code @Nullable E eOrNull()}. Then, whether {@code foo} is of type * {@code Foo} or {@code Foo<@Nullable String>}, the expression {@code foo.eOrNull()} * is nullable either way. Using {@code @Nullable E} in this way is called "nullable * projection" (non-null projection is likewise * supported, but less commonly useful). *
  • On a nested type: In most examples above, in place of {@code String} we might use a * nested type such as {@code Map.Entry}. The Java syntax for annotating such a type as * nullable looks like {@code Map.@Nullable Entry}. *
  • On a record component: As expected, {@code @Nullable} here applies equally to the * corresponding parameter type of the canonical constructor, and to the return type of a * generated accessor method as well. If an explicit accessor method is provided for this * record component, it must still be annotated explicitly. Any non-null components should be * checked (for example using {@link java.util.Objects#requireNonNull}) in a compact * constructor. *
* *

Where it is applicable

* *

This annotation and {@link NonNull} are applicable to any type usage except the * following cases, where they have no defined meaning: * *

    *
  • On any intrinsically non-null type usage. Some type usages are incapable of * including {@code null} by the rules of the Java language. Examples include any usage of a * primitive type, the argument to {@code instanceof}, a method return type in an annotation * interface, or the type following {@code throws} or {@code catch}. In such locations, a * nullness annotation could only be contradictory ({@code @Nullable}) or redundant * ({@code @NonNull}). *
  • On the root type of a local variable declaration. The nullness of a local variable * itself is not a fixed declarative property of its type. Rather it should be inferred * from the nullness of each expression assigned to the variable, possibly changing over time. * (Why?). Subcomponents of the type (type arguments, * array component types) are annotatable as usual. *
  • On the root type in a cast expression. To inform an analyzer that an expression it * sees as nullable is truly non-null, use an assertion or a method like {@link * java.util.Objects#requireNonNull}. (Why?) * Subcomponents of the type (type arguments, array component types) are annotatable as usual. *
  • On any part of a receiver parameter type (JLS 8.4). *
  • If both {@code @Nullable} and {@code @NonNull} appear on the same type usage, * neither one is recognized. *
* * Whether the code is {@link NullMarked} also has no consequence in the above locations. * *

Unannotated type usages

* *

For a type usage where nullness annotations are applicable but * not present, its nullness depends on whether it appears within {@linkplain NullMarked * null-marked} code; see that class for details. Note in particular that nullness information from * a superclass is never automatically "inherited". */ @Documented @Target(TYPE_USE) @Retention(RUNTIME) public @interface Nullable {} jspecify-1.0.0/src/main/java/org/jspecify/annotations/package-info.java000066400000000000000000000053641464555076100261340ustar00rootroot00000000000000/* * Copyright 2022 The JSpecify Authors. * * 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. */ /** * JSpecify annotations. See jspecify.org for general information. * *

What's here?

* * This package will contain annotations supporting a variety of static analyses. For now it * supports just nullness analysis. * *

Nullness

* * The primary annotations of interest are {@link NullMarked} and {@link Nullable}. Together they * provide declarative, use-site nullness for Java types. Less frequently, their negations * may be useful: {@link NullUnmarked} and {@link NonNull}, respectively. * *

For a comprehensive introduction to JSpecify, please see jspecify.org. * *

Note on tool behavior

* *

Each of these annotations defines a single meaning shared by all compatible tools (and * libraries). JSpecify documentation aims to provide unambiguous, tool-independent answers for how * to properly annotate your APIs in all circumstances. However, tools are permitted to * respond to the information you provide however they see fit (or not at all). JSpecify * compatibility does not require that any particular finding must or must not be issued to the * user, let alone its message or severity. * *

In fact, it's important to remember that declarative annotations are merely one source * of information an analyzer may consult in concluding an expression is safely non-null. Just like * one analyzer might determine that an {@code int} expression can take on only positive values, * another might likewise determine that a declaratively nullable expression can take on only * non-null values. In both cases the declarative knowledge is correct, but the inferred * knowledge is both correct and more specific. * *

On the other end, the tools might even enforce nothing at all. In particular, your * annotated code (or other code dependent on its annotated APIs) might be compiled and run without * any appropriate tool even in use. Therefore adopting JSpecify annotations is not a replacement * for explicitly checking arguments at runtime. */ package org.jspecify.annotations;