├── .editorconfig ├── .github ├── CODEOWNERS └── workflows │ ├── check.yml │ ├── pr.yml │ ├── release.yml │ └── resolve-version.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── build-conventions ├── build.gradle.kts ├── gradle ├── settings.gradle.kts └── src │ └── main │ └── kotlin │ ├── convention.atomicfu.gradle.kts │ ├── convention.common.gradle.kts │ ├── convention.control.gradle.kts │ ├── convention.detekt.gradle.kts │ ├── convention.git-hooks.gradle.kts │ ├── convention.library-android.gradle.kts │ ├── convention.library-mpp-all.gradle.kts │ ├── convention.library-mpp-loved.gradle.kts │ ├── convention.local-properties.gradle.kts │ ├── convention.mpp-all.gradle.kts │ ├── convention.mpp-loved.gradle.kts │ ├── convention.publishing-mpp.gradle.kts │ ├── convention.publishing-nexus.gradle.kts │ ├── convention.publishing.gradle.kts │ └── util │ ├── KotlinTargetDetails.kt │ ├── _global.kt │ ├── gradle.kt │ └── targetGroup.kt ├── build.gradle.kts ├── gradle.properties ├── gradle ├── detekt.yml ├── versions.properties ├── versions.rules └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── kotlin-js-store └── yarn.lock ├── redux-kotlin-thunk ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── commonMain │ └── kotlin │ │ └── org │ │ └── reduxkotlin │ │ └── thunk │ │ └── Thunk.kt │ └── jvmCommonTest │ └── kotlin │ ├── org │ └── reduxkotlin │ │ └── thunk │ │ └── ThunkTest.kt │ └── test │ └── TestApp.kt ├── renovate.json └── settings.gradle.kts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{kt,kts}] 4 | indent_size = 4 5 | ignored_rules = no-wildstar-imports 6 | insert_final_newline = true -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @patjackson52 @mpetuska 2 | -------------------------------------------------------------------------------- /.github/workflows/check.yml: -------------------------------------------------------------------------------- 1 | name: Check 2 | 3 | on: 4 | workflow_dispatch: 5 | workflow_call: 6 | 7 | concurrency: 8 | cancel-in-progress: true 9 | group: check-${{ github.workflow }}-${{ github.head_ref || github.ref }} 10 | 11 | env: 12 | GRADLE_OPTS: "-Dorg.gradle.daemon=true" 13 | 14 | jobs: 15 | lint: 16 | name: Lint the code 17 | runs-on: ubuntu-latest 18 | env: 19 | GRADLE_OPTS: "-Dorg.gradle.daemon=false" 20 | steps: 21 | - uses: actions/checkout@v3 22 | 23 | - uses: actions/setup-java@v3 24 | with: 25 | distribution: 'adopt' 26 | java-version: 11 27 | 28 | - name: Restore Gradle cache 29 | id: cache-gradle 30 | uses: actions/cache@v3 31 | with: 32 | path: | 33 | ~/.gradle/caches 34 | ~/.gradle/wrapper 35 | ~/.gradle/yarn 36 | ~/.gradle/nodejs 37 | ~/.konan 38 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 39 | restore-keys: ${{ runner.os }}-gradle- 40 | 41 | - name: Run detekt 42 | run: ./gradlew detektAll 43 | 44 | - name: Make artifact location URIs relative 45 | if: ${{ always() }} 46 | continue-on-error: true 47 | run: | 48 | ls '${{ github.workspace }}/build/reports/detekt/' 49 | cp '${{ github.workspace }}/build/reports/detekt/detekt.sarif' '${{ github.workspace }}/detekt.sarif.json' 50 | echo "$( 51 | jq --arg github_workspace ${{ github.workspace }} \ 52 | '. | ( .runs[].results[].locations[].physicalLocation.artifactLocation.uri |= if test($github_workspace) then .[($github_workspace | length | . + 1):] else . end )' \ 53 | '${{ github.workspace }}/detekt.sarif.json' 54 | )" > '${{ github.workspace }}/detekt.sarif.json' 55 | 56 | - uses: github/codeql-action/upload-sarif@v2 57 | if: ${{ always() }} 58 | with: 59 | sarif_file: ${{ github.workspace }}/detekt.sarif.json 60 | checkout_path: ${{ github.workspace }} 61 | 62 | check: 63 | name: Check on ${{ matrix.os.runner }} 64 | runs-on: ${{ matrix.os.runner }} 65 | defaults: 66 | run: 67 | shell: ${{ matrix.os.shell }} 68 | strategy: 69 | fail-fast: false 70 | matrix: 71 | os: 72 | - runner: macos-latest 73 | shell: bash 74 | separator: '/' 75 | - runner: ubuntu-latest 76 | shell: bash 77 | separator: '/' 78 | - runner: windows-latest 79 | shell: msys2 {0} 80 | separator: '\' 81 | steps: 82 | - uses: msys2/setup-msys2@v2 83 | if: ${{ runner.os == 'Windows' }} 84 | with: 85 | release: false 86 | msystem: MINGW64 87 | path-type: inherit 88 | update: true 89 | install: >- 90 | curl 91 | mingw-w64-x86_64-curl 92 | 93 | - uses: actions/checkout@v3 94 | 95 | - uses: actions/setup-java@v3 96 | with: 97 | distribution: 'adopt' 98 | java-version: 11 99 | 100 | - name: Restore Gradle cache 101 | id: cache-gradle 102 | uses: actions/cache@v3 103 | with: 104 | path: | 105 | ~/.gradle/caches 106 | ~/.gradle/wrapper 107 | ~/.gradle/yarn 108 | ~/.gradle/nodejs 109 | ~/.konan 110 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 111 | restore-keys: ${{ runner.os }}-gradle- 112 | 113 | - name: Gradle Compile 114 | run: ./gradlew compile assemble --scan 115 | 116 | - name: Gradle Check 117 | run: ./gradlew check -x detekt -x detektAll --scan 118 | 119 | - name: Gradle Test Local Publishing 120 | run: ./gradlew publishToLocal --scan 121 | 122 | - uses: actions/upload-artifact@v3 123 | if: ${{ always() }} 124 | with: 125 | name: reports-${{ runner.os }} 126 | path: | 127 | **${{ matrix.os.separator }}build${{ matrix.os.separator }}reports 128 | -------------------------------------------------------------------------------- /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | name: PR 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | 8 | env: 9 | GRADLE_OPTS: "-Dorg.gradle.daemon=true" 10 | 11 | concurrency: 12 | cancel-in-progress: true 13 | group: pr-${{ github.workflow }}-${{ github.head_ref || github.ref }} 14 | 15 | jobs: 16 | check: 17 | uses: ./.github/workflows/check.yml -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | paths: 6 | - '**/src/**' 7 | branches: 8 | - master 9 | workflow_dispatch: 10 | inputs: 11 | version: 12 | required: false 13 | description: Package version to publish under 14 | skipPages: 15 | description: Should we skip releasing GitHub pages 16 | required: false 17 | default: "y" 18 | skipMavenCentral: 19 | description: Should we skip publishing artefacts to Maven Central 20 | required: false 21 | default: "y" 22 | skipGitHub: 23 | description: Should we skip publishing artefacts to GitHub Packages 24 | required: false 25 | default: "y" 26 | release: 27 | types: [ created ] 28 | 29 | env: 30 | GRADLE_OPTS: "-Dorg.gradle.daemon=true" 31 | 32 | concurrency: 33 | cancel-in-progress: false 34 | group: release-${{ github.workflow }}-${{ github.head_ref || github.ref }} 35 | 36 | jobs: 37 | check: 38 | uses: ./.github/workflows/check.yml 39 | 40 | resolve-version: 41 | uses: ./.github/workflows/resolve-version.yml 42 | needs: [ check ] 43 | with: 44 | desired-version: ${{ github.event.release.tag_name || github.event.inputs.version }} 45 | 46 | build-dokka: 47 | name: Build Dokka 48 | needs: 49 | - check 50 | - resolve-version 51 | runs-on: ubuntu-latest 52 | env: 53 | VERSION: ${{ needs.resolve-version.outputs.version }} 54 | steps: 55 | - uses: actions/checkout@v3 56 | 57 | - uses: actions/setup-java@v3 58 | with: 59 | distribution: 'adopt' 60 | java-version: 11 61 | 62 | - name: Restore Gradle cache 63 | id: cache-gradle 64 | uses: actions/cache@v3 65 | with: 66 | path: | 67 | ~/.gradle/caches 68 | ~/.gradle/wrapper 69 | ~/.gradle/yarn 70 | ~/.gradle/nodejs 71 | ~/.konan 72 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 73 | restore-keys: ${{ runner.os }}-gradle- 74 | 75 | - name: Gradle Assemble Dokka 76 | run: ./gradlew dokkaHtmlMultiModule -Pversion=${VERSION//v} --scan 77 | 78 | - uses: actions/upload-artifact@v3 79 | with: 80 | name: dokka 81 | path: | 82 | **/build/dokka 83 | 84 | release-Artefacts: 85 | name: Release to ${{ matrix.repository.name }} on ${{ matrix.os.runner }} 86 | runs-on: ${{ matrix.os.runner }} 87 | needs: 88 | - check 89 | - resolve-version 90 | defaults: 91 | run: 92 | shell: ${{ matrix.os.shell }} 93 | env: 94 | VERSION: ${{ needs.resolve-version.outputs.version }} 95 | GH_USERNAME: ${{ github.actor }} 96 | GH_PASSWORD: ${{ github.token }} 97 | ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_SECRET }} 98 | ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.GPG_SIGNING_KEY_ID }} 99 | ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_SIGNING_PASSWORD }} 100 | ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} 101 | ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} 102 | strategy: 103 | fail-fast: false 104 | matrix: 105 | repository: 106 | - name: Github Packages 107 | tasks: publishAllPublicationsToGitHubRepository 108 | enabled: ${{ github.event.inputs.skipGitHub != 'y' }} 109 | - name: Maven Central 110 | # `closeSonatypeStagingRepository` Requires to manually release a new version on https://s01.oss.sonatype.org/#stagingRepositories 111 | # If you're brave, you could change it to `closeAndReleaseSonatypeStagingRepository` to fully automate the release 112 | tasks: publishToSonatype closeAndReleaseSonatypeStagingRepository 113 | enabled: ${{ github.event.inputs.skipMavenCentral != 'y' }} 114 | os: 115 | - runner: macos-latest 116 | shell: bash 117 | - runner: windows-latest 118 | shell: msys2 {0} 119 | - runner: ubuntu-latest 120 | shell: bash 121 | steps: 122 | - uses: msys2/setup-msys2@v2 123 | if: ${{ matrix.repository.enabled == true && runner.os == 'Windows' }} 124 | with: 125 | release: false 126 | msystem: MINGW64 127 | update: true 128 | path-type: inherit 129 | install: >- 130 | mingw-w64-x86_64-curl 131 | curl 132 | 133 | - uses: actions/checkout@v3 134 | if: ${{ matrix.repository.enabled == true }} 135 | 136 | - uses: actions/setup-java@v3 137 | if: ${{ matrix.repository.enabled == true }} 138 | with: 139 | distribution: 'adopt' 140 | java-version: 11 141 | 142 | - name: Restore Gradle cache 143 | if: ${{ matrix.repository.enabled == true }} 144 | id: cache-gradle 145 | uses: actions/cache@v3 146 | with: 147 | path: | 148 | ~/.gradle/caches 149 | ~/.gradle/wrapper 150 | ~/.gradle/yarn 151 | ~/.gradle/nodejs 152 | ~/.konan 153 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} 154 | restore-keys: ${{ runner.os }}-gradle- 155 | 156 | - name: Gradle Publish to ${{ matrix.repository.name }} 157 | if: ${{ matrix.repository.enabled == true }} 158 | run: ./gradlew ${{ matrix.repository.tasks }} -Pversion=${VERSION//v} --scan 159 | 160 | release-Dokka: 161 | runs-on: ubuntu-latest 162 | needs: 163 | - build-dokka 164 | - resolve-version 165 | if: ${{ github.event.inputs.skipPages != 'y' && needs.resolve-version.outputs.snapshot == 'false' }} 166 | env: 167 | VERSION: ${{ needs.resolve-version.outputs.version }} 168 | steps: 169 | - uses: actions/download-artifact@v3 170 | with: 171 | name: dokka 172 | 173 | - name: Build Dokka Pages 174 | run: | 175 | REPO_NAME=${{ github.repository }} 176 | REPO_NAME=${REPO_NAME#${{ github.repository_owner }}/} 177 | cp -avr build/dokka/htmlMultiModule/ public; 178 | find public -type f -regex '.*\.\(htm\|html\|txt\|text\|js\|css\)$' -exec gzip -f -k {} \; 179 | echo "/${REPO_NAME} /${REPO_NAME}/${REPO_NAME}/index.html 301" > public/_redirects; 180 | echo "/${REPO_NAME}/index.html /${REPO_NAME}/${REPO_NAME}/index.html 301" >> public/_redirects; 181 | 182 | - uses: crazy-max/ghaction-github-pages@v3 183 | with: 184 | target_branch: gh-pages 185 | build_dir: public 186 | env: 187 | GITHUB_TOKEN: ${{ github.token }} 188 | -------------------------------------------------------------------------------- /.github/workflows/resolve-version.yml: -------------------------------------------------------------------------------- 1 | name: Resolve Version 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | desired-version: 7 | type: string 8 | description: Optional desired version 9 | required: false 10 | outputs: 11 | version: 12 | value: ${{ jobs.resolve.outputs.version }} 13 | snapshot: 14 | value: ${{ jobs.resolve.outputs.snapshot }} 15 | 16 | concurrency: 17 | cancel-in-progress: true 18 | group: version-${{ github.workflow }}-${{ github.head_ref || github.ref }} 19 | 20 | jobs: 21 | resolve: 22 | name: Resolve Version 23 | runs-on: ubuntu-latest 24 | env: 25 | VERSION: ${{ inputs.desired-version }} 26 | outputs: 27 | version: ${{ steps.resolve.outputs.version }} 28 | snapshot: ${{ steps.resolve.outputs.snapshot }} 29 | steps: 30 | - uses: actions/checkout@v3 31 | - name: Resolve 32 | id: resolve 33 | run: | 34 | project_version=$(cat gradle.properties | grep -Po '^version=\K(.+)') 35 | version=${VERSION:=$project_version} 36 | VERSION=${VERSION/v} 37 | echo "PROJECT_VERSION=${project_version}" >> $GITHUB_ENV 38 | echo "VERSION=${VERSION}" >> $GITHUB_ENV 39 | echo "::set-output name=version::${VERSION}" 40 | if [[ "$VERSION" != "$project_version" ]]; then 41 | echo "DIFF_VERSION=1" >> $GITHUB_ENV 42 | fi 43 | if [[ "$VERSION" == *-SNAPSHOT ]]; then 44 | echo "::set-output name=snapshot::true" 45 | else 46 | echo "::set-output name=snapshot::false" 47 | fi 48 | - name: Report 49 | run: | 50 | echo "VERSION=${{ env.VERSION }}" 51 | echo "steps.resolve.outputs.version=${{ steps.resolve.outputs.version }}" 52 | - name: Create Snapshot 53 | if: env.DIFF_VERSION == '1' 54 | run: | 55 | main_version=$(echo $VERSION | grep -Po '^([0-9]+.){2}(?=.*)') 56 | patch_version=$(echo $VERSION | grep -Po "^$main_version\\K([0-9]+)(?=.*)") 57 | patch_version=$(expr $patch_version + 1) 58 | SNAPSHOT_VERSION="${main_version}${patch_version}-SNAPSHOT" 59 | echo "SNAPSHOT_VERSION=$SNAPSHOT_VERSION" >> $GITHUB_ENV 60 | sed -Ei "s|^(version=).*\$|\\1$SNAPSHOT_VERSION|" gradle.properties 61 | - name: Create Pull Request for new SNAPSHOT 62 | if: env.DIFF_VERSION == '1' && env.PROJECT_VERSION != env.SNAPSHOT_VERSION 63 | uses: peter-evans/create-pull-request@v4 64 | with: 65 | title: 'New SNAPSHOT - ${{ env.SNAPSHOT_VERSION }}' 66 | commit-message: '[ci skip] New SNAPSHOT - ${{ env.SNAPSHOT_VERSION }}' 67 | branch: ci/version/${{ env.SNAPSHOT_VERSION }} 68 | delete-branch: true 69 | base: master 70 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle/ 3 | lint.xml 4 | /local.properties 5 | .idea/ 6 | /iOS/NameGame/.idea/ 7 | .DS_Store 8 | *.hprof 9 | /captures 10 | .externalNativeBuild 11 | node_modules/ 12 | 13 | # Created by https://www.gitignore.io/api/swift,xcode 14 | 15 | ### Swift ### 16 | # Xcode 17 | # 18 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 19 | 20 | ## Build generated 21 | build/ 22 | DerivedData/ 23 | 24 | ## Various settings 25 | *.pbxuser 26 | !default.pbxuser 27 | *.mode1v3 28 | !default.mode1v3 29 | *.mode2v3 30 | !default.mode2v3 31 | *.perspectivev3 32 | !default.perspectivev3 33 | xcuserdata/ 34 | 35 | ## Other 36 | *.moved-aside 37 | *.xccheckout 38 | *.xcscmblueprint 39 | 40 | ## Obj-C/Swift specific 41 | *.hmap 42 | *.ipa 43 | *.dSYM.zip 44 | *.dSYM 45 | 46 | ## Playgrounds 47 | timeline.xctimeline 48 | playground.xcworkspace 49 | 50 | # Swift Package Manager 51 | # 52 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 53 | # Packages/ 54 | # Package.pins 55 | .build/ 56 | 57 | # CocoaPods - Refactored to standalone file 58 | 59 | # Carthage - Refactored to standalone file 60 | 61 | # fastlane 62 | # 63 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 64 | # screenshots whenever they are needed. 65 | # For more information about the recommended setup visit: 66 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 67 | 68 | fastlane/report.xml 69 | fastlane/Preview.html 70 | fastlane/screenshots 71 | fastlane/test_output 72 | 73 | ### Xcode ### 74 | # Xcode 75 | # 76 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 77 | 78 | ## Build generated 79 | 80 | ## Various settings 81 | 82 | ## Other 83 | 84 | 85 | # End of https://www.gitignore.io/api/swift,xcode 86 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | --- 9 | 10 | ## [Unreleased] 11 | 12 | ## [0.6.0] 13 | 14 | ### Added 15 | 16 | - All missing ios, watchos, tvos and macos simulator targets added 17 | - Added `androidNativeX64` and `androidNativeX86` targets 18 | - Added proper android release and debug variants instead of piggybacking on jvm artefact 19 | - New and improved `typedReducer` and `createTypedStore` builders for those needing a simple 20 | action-typed store. 21 | Recommended to use with sealed interface hierarchies. 22 | 23 | ### Changed 24 | 25 | - Major gradle infra rework 26 | - Enabled `explicitPublicApi()` 27 | - **BREAKING**: `redux-kotlin-thunk` APIs moved to a new package: `org.reduxkotlin.thunk` 28 | 29 | ### Removed 30 | 31 | - Remove deprecated `wasm32` target 32 | 33 | --- 34 | 35 | ## [0.5.4] - 2020-08-16 36 | 37 | - kotlin 1.4.0 final 38 | - change test.yml to just run a build (currently no tests) 39 | - update to redux-kotlin 0.5.5 40 | 41 | --- 42 | 43 | [Unreleased]: https://github.com/reduxkotlin/redux-kotlin-thunk/compare/0.6.0...HEAD 44 | 45 | [0.6.0]: https://github.com/reduxkotlin/redux-kotlin-thunk/compare/v0.5.5...0.6.0 46 | 47 | [0.5.5]: https://github.com/reduxkotlin/redux-kotlin-thunk/compare/v0.5.4...v0.5.5 48 | 49 | [0.5.4]: https://github.com/reduxkotlin/redux-kotlin-thunk/releases/tag/v0.5.4 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Redux-Kotlin-Thunk 2 | 3 | [![Release](https://github.com/reduxkotlin/redux-kotlin-thunk/actions/workflows/release.yml/badge.svg)](https://github.com/reduxkotlin/redux-kotlin-thunk/actions/workflows/release.yml) 4 | ![badge][badge-android] 5 | ![badge][badge-native] 6 | ![badge][badge-js] 7 | ![badge][badge-jvm] 8 | ![badge][badge-linux] 9 | ![badge][badge-windows] 10 | ![badge][badge-mac] 11 | [![Slack chat](https://img.shields.io/badge/kotlinlang-%23redux-green?logo=slack&style=flat-square)][slack] 12 | [![Dokka docs](https://img.shields.io/badge/docs-dokka-orange?style=flat-square&logo=kotlin)](http://reduxkotlin.github.io/redux-kotlin-thunk) 13 | [![Version maven-central](https://img.shields.io/maven-central/v/org.reduxkotlin/redux-kotlin-thunk?logo=apache-maven&style=flat-square)](https://mvnrepository.com/artifact/org.reduxkotlin/redux-kotlin-thunk/latest) 14 | [![Version maven-snapshot](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Foss.sonatype.org%2Fcontent%2Frepositories%2Fsnapshots%2Forg%2Freduxkotlin%2Fredux-kotlin-thunk%2Fmaven-metadata.xml&logo=apache-maven&label=maven-snapshot&style=flat-square)](https://oss.sonatype.org/content/repositories/snapshots/org/reduxkotlin/redux-kotlin-thunk/) 15 | 16 | A redux Thunk implementation for async action dispatch. 17 | A Thunk must conform to the `Thunk` typealias, which is a function with 3 paramaters: `dispatch`, `getState`, & `extraArg`. 18 | A common use is to make a function return a `Thunk`. This allows passing params to the function. 19 | 20 | NOTE: Before v0.4.0 `Thunk` was an interface. Kotlin 1.3.70 fixed a bug which allows using a typealias instead, which is more concise and closer to the JS implementation. 21 | 22 | ```kotlin 23 | val store = createStore(::reducer, applymiddleware(createThunkMiddleware())) 24 | 25 | ... 26 | 27 | fun fooThunk(query: String): Thunk = { dispatch, getState, extraArg -> 28 | dispatch(FetchingFooAction) 29 | launch { 30 | val result = api.foo(query) 31 | if (result.isSuccessful()) { 32 | dispatch(FetchFooSuccess(result.payload) 33 | } else { 34 | dispatch(FetchFooFailure(result.message) 35 | } 36 | } 37 | } 38 | 39 | ... 40 | 41 | fun bar() { 42 | dispatch(fooThunk("my query")) 43 | } 44 | ``` 45 | 46 | __How to add to project:__ 47 | 48 | Artifacts are hosted on maven central. For multiplatform, add the following to your shared module: 49 | 50 | ```kotlin 51 | kotlin { 52 | sourceSets { 53 | commonMain { // <--- name may vary on your project 54 | dependencies { 55 | implementation("org.reduxkotlin:redux-kotlin-thunk:_") 56 | } 57 | } 58 | } 59 | ``` 60 | 61 | For JVM only: 62 | ```kotlin 63 | implementation("org.reduxkotlin:redux-kotlin-thunk-jvm:_") 64 | ``` 65 | 66 | [badge-android]: http://img.shields.io/badge/platform-android-brightgreen.svg?style=flat 67 | [badge-native]: http://img.shields.io/badge/platform-native-lightgrey.svg?style=flat 68 | [badge-native]: http://img.shields.io/badge/platform-native-lightgrey.svg?style=flat 69 | [badge-js]: http://img.shields.io/badge/platform-js-yellow.svg?style=flat 70 | [badge-js]: http://img.shields.io/badge/platform-js-yellow.svg?style=flat 71 | [badge-jvm]: http://img.shields.io/badge/platform-jvm-orange.svg?style=flat 72 | [badge-jvm]: http://img.shields.io/badge/platform-jvm-orange.svg?style=flat 73 | [badge-linux]: http://img.shields.io/badge/platform-linux-important.svg?style=flat 74 | [badge-linux]: http://img.shields.io/badge/platform-linux-important.svg?style=flat 75 | [badge-windows]: http://img.shields.io/badge/platform-windows-informational.svg?style=flat 76 | [badge-windows]: http://img.shields.io/badge/platform-windows-informational.svg?style=flat 77 | [badge-mac]: http://img.shields.io/badge/platform-macos-lightgrey.svg?style=flat 78 | [badge-mac]: http://img.shields.io/badge/platform-macos-lightgrey.svg?style=flat 79 | [slack]: https://kotlinlang.slack.com/archives/C8A8G5F9Q 80 | -------------------------------------------------------------------------------- /build-conventions/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.gradle.tasks.KotlinCompile 2 | 3 | plugins { 4 | `kotlin-dsl` 5 | } 6 | 7 | repositories { 8 | gradlePluginPortal() 9 | mavenCentral() 10 | google() 11 | if (findProperty("project.enableSnapshots") == "true") { 12 | maven("https://oss.sonatype.org/content/repositories/snapshots") 13 | } 14 | } 15 | 16 | dependencies { 17 | implementation("com.android.tools.build:gradle:_") 18 | implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:_") 19 | implementation("com.github.jakemarsden:git-hooks-gradle-plugin:_") 20 | implementation("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:_") 21 | implementation("io.github.gradle-nexus:publish-plugin:_") 22 | implementation("org.jetbrains.dokka:dokka-gradle-plugin:_") 23 | implementation("org.jetbrains.kotlinx:atomicfu-gradle-plugin:_") 24 | } 25 | 26 | tasks { 27 | withType { 28 | kotlinOptions { 29 | languageVersion = "1.4" // 1.9 since gradle 8 30 | } 31 | } 32 | } 33 | 34 | gradleEnterprise { 35 | buildScan { 36 | termsOfServiceUrl = "https://gradle.com/terms-of-service" 37 | termsOfServiceAgree = "yes" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /build-conventions/gradle: -------------------------------------------------------------------------------- 1 | ../gradle -------------------------------------------------------------------------------- /build-conventions/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("de.fayard.refreshVersions") version "0.51.0" 3 | id("com.gradle.enterprise") version "3.12.2" 4 | } 5 | 6 | refreshVersions { 7 | versionsPropertiesFile = rootDir.resolve("gradle/versions.properties") 8 | extraArtifactVersionKeyRules(rootDir.resolve("gradle/versions.rules")) 9 | } 10 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.atomicfu.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("kotlinx-atomicfu") 3 | } 4 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.common.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.konan.target.HostManager 2 | 3 | plugins { 4 | id("convention.local-properties") 5 | id("convention.detekt") 6 | idea 7 | } 8 | 9 | repositories { 10 | mavenCentral() 11 | google() 12 | gradlePluginPortal() 13 | if (findProperty("project.enableSnapshots") == "true") { 14 | maven("https://oss.sonatype.org/content/repositories/snapshots") 15 | } 16 | } 17 | 18 | printlnCI( 19 | """ 20 | CI: $CI 21 | SANDBOX: $SANDBOX 22 | isMainHost: $isMainHost 23 | --- 24 | hostIsLinux: ${HostManager.hostIsLinux} 25 | hostIsMac: ${HostManager.hostIsMac} 26 | hostIsMingw: ${HostManager.hostIsMingw} 27 | """.trimIndent() 28 | ) 29 | 30 | idea { 31 | module { 32 | isDownloadSources = true 33 | isDownloadJavadoc = true 34 | } 35 | } 36 | 37 | afterEvaluate { 38 | tasks { 39 | if (findByName("compile") == null) { 40 | register("compile") { 41 | dependsOn(withType(AbstractCompile::class)) 42 | group = "build" 43 | } 44 | } 45 | if (findByName("allTests") == null) { 46 | register("allTests") { 47 | dependsOn(withType(AbstractTestTask::class)) 48 | group = "verification" 49 | } 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.control.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension 2 | import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension 3 | import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension 4 | import org.jetbrains.kotlin.gradle.plugin.KotlinTarget 5 | import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget 6 | import org.jetbrains.kotlin.konan.target.Family 7 | import org.jetbrains.kotlin.konan.target.HostManager 8 | import util.buildHost 9 | 10 | plugins { 11 | id("convention.common") 12 | } 13 | 14 | pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") { 15 | extensions.getByType(KotlinMultiplatformExtension::class.java).targets.let(::control) 16 | } 17 | pluginManager.withPlugin("org.jetbrains.kotlin.jvm") { 18 | objects.namedDomainObjectList(KotlinTarget::class.java).apply { 19 | add(extensions.getByType(KotlinJvmProjectExtension::class.java).target) 20 | }.let(::control) 21 | } 22 | pluginManager.withPlugin("org.jetbrains.kotlin.js") { 23 | objects.namedDomainObjectList(KotlinTarget::class.java).apply { 24 | add(extensions.getByType(KotlinJsProjectExtension::class.java).js()) 25 | }.let(::control) 26 | } 27 | 28 | fun control(targets: NamedDomainObjectCollection) { 29 | fun NamedDomainObjectCollection.onlyBuildIf(enabled: Spec) { 30 | all { 31 | if (this is KotlinNativeTarget) { 32 | binaries.all { 33 | linkTask.onlyIf(enabled) 34 | } 35 | } 36 | compilations.all { 37 | compileTaskProvider { 38 | onlyIf(enabled) 39 | } 40 | } 41 | } 42 | } 43 | 44 | val nativeTargets = targets.withType() 45 | val windowsHostTargets = nativeTargets.matching { it.konanTarget.buildHost == Family.MINGW } 46 | val linuxHostTargets = nativeTargets.matching { it.konanTarget.buildHost == Family.LINUX } 47 | val osxHostTargets = nativeTargets.matching { it.konanTarget.buildHost == Family.OSX } 48 | val mainHostTargets = targets.matching { it !in nativeTargets } 49 | val mainEnabled = !CI || isMainHost 50 | linuxHostTargets.onlyBuildIf { 51 | val enabled = mainEnabled || HostManager.hostIsLinux 52 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || ${HostManager.hostIsLinux} = $enabled") 53 | enabled 54 | } 55 | osxHostTargets.onlyBuildIf { 56 | val enabled = mainEnabled || HostManager.hostIsMac 57 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || ${HostManager.hostIsMac} = $enabled") 58 | enabled 59 | } 60 | windowsHostTargets.onlyBuildIf { 61 | val enabled = mainEnabled || HostManager.hostIsMingw 62 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || ${HostManager.hostIsMingw} = $enabled") 63 | enabled 64 | } 65 | mainHostTargets.onlyBuildIf { 66 | val enabled = mainEnabled || SANDBOX 67 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || $isMainHost = $enabled") 68 | mainEnabled 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.detekt.gradle.kts: -------------------------------------------------------------------------------- 1 | import io.gitlab.arturbosch.detekt.Detekt 2 | 3 | plugins { 4 | id("io.gitlab.arturbosch.detekt") 5 | } 6 | 7 | dependencies { 8 | detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:_") 9 | } 10 | 11 | detekt { 12 | config.from(rootDir.resolve("gradle/detekt.yml")) 13 | buildUponDefaultConfig = true 14 | source = files("src/", "*.kts") 15 | } 16 | 17 | tasks { 18 | if (project == rootProject) { 19 | register("detektAll", Detekt::class) { 20 | description = "Run Detekt for all modules" 21 | config.from(project.detekt.config) 22 | buildUponDefaultConfig = project.detekt.buildUponDefaultConfig 23 | setSource(files(projectDir)) 24 | } 25 | } 26 | afterEvaluate { 27 | withType { 28 | parallel = true 29 | reports { 30 | // observe findings in your browser with structure and code snippets 31 | html.required.set(true) 32 | // checkstyle like format mainly for integrations like Jenkins 33 | xml.required.set(true) 34 | // similar to the console output, contains issue signature to manually edit baseline files 35 | txt.required.set(true) 36 | // standardized SARIF format (https://sarifweb.azurewebsites.net/) to support integrations with Github Code Scanning 37 | sarif.required.set(true) 38 | } 39 | include("**/*.kt", "**/*.kts") 40 | exclude("**/build", "scripts/") 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.git-hooks.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.github.jakemarsden.git-hooks") 3 | } 4 | 5 | gitHooks { 6 | setHooks( 7 | mapOf( 8 | "pre-commit" to "detektAll --auto-correct", 9 | "pre-push" to "detektAll" 10 | ) 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.library-android.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("convention.common") 3 | id("com.android.library") 4 | } 5 | 6 | android { 7 | compileSdk = 33 8 | defaultConfig { 9 | minSdk = 21 10 | targetSdk = 33 11 | // testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" 12 | publishing { 13 | multipleVariants { 14 | withSourcesJar() 15 | withJavadocJar() 16 | allVariants() 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.library-mpp-all.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("convention.mpp-all") 3 | id("convention.library-mpp-loved") 4 | } 5 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.library-mpp-loved.gradle.kts: -------------------------------------------------------------------------------- 1 | import util.jvmCommonTest 2 | 3 | plugins { 4 | id("convention.mpp-loved") 5 | id("convention.library-android") 6 | id("convention.control") 7 | } 8 | 9 | kotlin { 10 | explicitApi() 11 | android { 12 | if (!CI || SANDBOX || isMainHost) { 13 | publishLibraryVariants("release", "debug") 14 | } 15 | } 16 | 17 | sourceSets { 18 | named("commonTest") { 19 | dependencies { 20 | implementation(kotlin("test-common")) 21 | implementation(kotlin("test-annotations-common")) 22 | } 23 | } 24 | named("androidMain") { 25 | val jvmCommonMain by getting 26 | kotlin.srcDir(jvmCommonMain.kotlin) 27 | resources.srcDir(jvmCommonMain.resources) 28 | } 29 | named("androidUnitTest") { 30 | val jvmCommonTest by getting 31 | kotlin.srcDir(jvmCommonTest.kotlin) 32 | resources.srcDir(jvmCommonTest.resources) 33 | } 34 | named("jsTest") { 35 | dependencies { 36 | implementation(kotlin("test-js")) 37 | } 38 | } 39 | jvmCommonTest { 40 | dependencies { 41 | implementation(kotlin("test-junit")) 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.local-properties.gradle.kts: -------------------------------------------------------------------------------- 1 | import java.util.* 2 | 3 | rootDir.resolve("local.properties").takeIf(File::exists)?.let { 4 | Properties().apply { 5 | it.inputStream().use(::load) 6 | }.mapKeys { (k, _) -> k.toString() } 7 | }?.toList()?.forEach { (k, v) -> 8 | project.extra[k] = v 9 | } 10 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.mpp-all.gradle.kts: -------------------------------------------------------------------------------- 1 | import util.targetGroup 2 | 3 | plugins { 4 | id("convention.mpp-loved") 5 | } 6 | 7 | kotlin { 8 | val nativeMain by sourceSets.getting 9 | val nativeTest by sourceSets.getting 10 | targetGroup( 11 | name = "androidNative", 12 | mainSourceSetTarget = nativeMain, 13 | testSourceSetTarget = nativeTest, 14 | androidNativeArm32(), 15 | androidNativeArm64(), 16 | androidNativeX64(), 17 | androidNativeX86(), 18 | ) 19 | targetGroup( 20 | name = "mingw", 21 | mainSourceSetTarget = nativeMain, 22 | testSourceSetTarget = nativeTest, 23 | mingwX86(), 24 | ) 25 | targetGroup( 26 | name = "linux", 27 | mainSourceSetTarget = nativeMain, 28 | testSourceSetTarget = nativeTest, 29 | linuxArm32Hfp(), 30 | linuxArm64(), 31 | linuxMips32(), 32 | linuxMipsel32(), 33 | ) 34 | targetGroup( 35 | name = "watchos", 36 | mainSourceSetTarget = "appleMain", 37 | testSourceSetTarget = "appleTest", 38 | watchosDeviceArm64(), 39 | ) 40 | } 41 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.mpp-loved.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget 2 | import util.targetGroup 3 | 4 | plugins { 5 | id("convention.common") 6 | kotlin("multiplatform") 7 | } 8 | 9 | kotlin { 10 | js { 11 | useCommonJs() 12 | browser { testTask { useKarma() } } 13 | nodejs() 14 | } 15 | targetGroup( 16 | name = "jvmCommon", 17 | mainSourceSetTarget = "commonMain", 18 | testSourceSetTarget = "commonTest", 19 | jvm(), 20 | ) 21 | val (nativeMain, nativeTest) = targetGroup( 22 | name = "native", 23 | mainSourceSetTarget = "commonMain", 24 | testSourceSetTarget = "commonTest", 25 | ) 26 | val (appleMain, appleTest) = targetGroup( 27 | name = "apple", 28 | mainSourceSetTarget = nativeMain, 29 | testSourceSetTarget = nativeTest, 30 | ) 31 | targetGroup( 32 | name = "ios", 33 | mainSourceSetTarget = appleMain, 34 | testSourceSetTarget = appleTest, 35 | iosArm32(), 36 | iosArm64(), 37 | iosSimulatorArm64(), 38 | iosX64(), 39 | ) 40 | targetGroup( 41 | name = "tvos", 42 | mainSourceSetTarget = appleMain, 43 | testSourceSetTarget = appleTest, 44 | tvosArm64(), 45 | tvosX64(), 46 | tvosSimulatorArm64(), 47 | ) 48 | targetGroup( 49 | name = "watchos", 50 | mainSourceSetTarget = appleMain, 51 | testSourceSetTarget = appleTest, 52 | watchosArm32(), 53 | watchosArm64(), 54 | watchosX64(), 55 | watchosX86(), 56 | watchosSimulatorArm64() 57 | ) 58 | targetGroup( 59 | name = "macos", 60 | mainSourceSetTarget = appleMain, 61 | testSourceSetTarget = appleTest, 62 | macosX64(), 63 | macosArm64(), 64 | ) 65 | targetGroup( 66 | name = "mingw", 67 | mainSourceSetTarget = nativeMain, 68 | testSourceSetTarget = nativeTest, 69 | mingwX64(), 70 | ) 71 | targetGroup( 72 | name = "linux", 73 | mainSourceSetTarget = nativeMain, 74 | testSourceSetTarget = nativeTest, 75 | linuxX64(), 76 | ) 77 | } 78 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.publishing-mpp.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget 2 | import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget 3 | import org.jetbrains.kotlin.konan.target.Family 4 | import org.jetbrains.kotlin.konan.target.HostManager 5 | import util.buildHost 6 | 7 | plugins { 8 | kotlin("multiplatform") 9 | id("convention.publishing") 10 | } 11 | 12 | kotlin { 13 | fun NamedDomainObjectCollection.onlyPublishIf(enabled: Spec) { 14 | publishing { 15 | publications { 16 | matching { it.name in this@onlyPublishIf.names }.all { 17 | val targetPublication = this@all 18 | tasks { 19 | withType() 20 | .all { onlyIf { publication != targetPublication || enabled(this) } } 21 | withType() 22 | .all { onlyIf { publication.orNull != targetPublication || enabled(this) } } 23 | } 24 | } 25 | } 26 | } 27 | } 28 | 29 | val nativeTargets = targets.withType() 30 | val windowsHostTargets = nativeTargets.matching { it.konanTarget.buildHost == Family.MINGW } 31 | val linuxHostTargets = nativeTargets.matching { it.konanTarget.buildHost == Family.LINUX } 32 | val osxHostTargets = nativeTargets.matching { it.konanTarget.buildHost == Family.OSX } 33 | val mainHostTargets = targets.matching { it !in nativeTargets } 34 | val androidTargets = targets.withType() 35 | val mpp = objects.domainObjectContainer(Named::class.java) 36 | mpp.add(Named { "kotlinMultiplatform" }) 37 | 38 | androidTargets.all { 39 | if (!CI || SANDBOX || isMainHost) { 40 | publishLibraryVariants("release", "debug") 41 | } 42 | } 43 | 44 | linuxHostTargets.onlyPublishIf { 45 | val enabled = !CI || SANDBOX || HostManager.hostIsLinux 46 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || ${HostManager.hostIsLinux} = $enabled") 47 | enabled 48 | } 49 | osxHostTargets.onlyPublishIf { 50 | val enabled = !CI || SANDBOX || HostManager.hostIsMac 51 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || ${HostManager.hostIsMac} = $enabled") 52 | enabled 53 | } 54 | windowsHostTargets.onlyPublishIf { 55 | val enabled = !CI || SANDBOX || HostManager.hostIsMingw 56 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || ${HostManager.hostIsMingw} = $enabled") 57 | enabled 58 | } 59 | mainHostTargets.onlyPublishIf { 60 | val enabled = !CI || SANDBOX || isMainHost 61 | printlnCI("[${it.name}] ${!CI} || $SANDBOX || $isMainHost = $enabled") 62 | enabled 63 | } 64 | mpp.onlyPublishIf { 65 | val enabled = !CI || SANDBOX || isMainHost 66 | println("[${it.name}] ${!CI} || $SANDBOX || $isMainHost = $enabled") 67 | enabled 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.publishing-nexus.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("convention.common") 3 | id("org.jetbrains.dokka") 4 | id("io.github.gradle-nexus.publish-plugin") 5 | } 6 | 7 | nexusPublishing { 8 | repositories { 9 | sonatype { 10 | nexusUrl by uri("https://oss.sonatype.org/service/local/") 11 | snapshotRepositoryUrl by uri("https://oss.sonatype.org/content/repositories/snapshots/") 12 | val checkProp = { pName: String -> 13 | val exists = findProperty("sonatypeUsername")?.toString()?.takeIf(String::isNotBlank) 14 | ?.let { "EXISTS" } ?: "MISSING" 15 | printlnCI("$pName: $exists") 16 | } 17 | checkProp("sonatypeUsername") 18 | checkProp("sonatypePassword") 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/convention.publishing.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.kotlin.konan.target.HostManager 2 | import util.Git 3 | 4 | plugins { 5 | id("convention.common") 6 | id("org.jetbrains.dokka") 7 | `maven-publish` 8 | signing 9 | } 10 | 11 | tasks { 12 | register("javadocJar") { 13 | dependsOn(dokkaHtml) 14 | archiveClassifier.set("javadoc") 15 | from(dokkaHtml.get().outputDirectory) 16 | } 17 | withType { 18 | manifest { 19 | attributes += sortedMapOf( 20 | "Built-By" to System.getProperty("user.name"), 21 | "Build-Jdk" to System.getProperty("java.version"), 22 | "Implementation-Version" to project.version, 23 | "Created-By" to "${GradleVersion.current()}", 24 | "Created-From" to "${Git.headCommitHash}" 25 | ) 26 | } 27 | } 28 | val cleanMavenLocal by registering { 29 | group = "build" 30 | doLast { 31 | val m2Repo = file("${System.getProperty("user.home")}/.m2/repository") 32 | val groupRepo = file("$m2Repo/${project.group.toString().replace(".", "/")}") 33 | publishing.publications.filterIsInstance().forEach { 34 | groupRepo.resolve(it.artifactId).deleteRecursively() 35 | } 36 | } 37 | } 38 | named("clean") { 39 | dependsOn(cleanMavenLocal) 40 | } 41 | register("publishToLocal") { 42 | description = "Publishes all packages to local maven repository at rootDir/build/localMaven" 43 | dependsOn("publishAllPublicationsToLocalRepository") 44 | } 45 | } 46 | 47 | signing { 48 | val signingKey: String? by project 49 | val signingPassword: String? by project 50 | if (signingKey != null) { 51 | useInMemoryPgpKeys(signingKey, signingPassword) 52 | sign(publishing.publications) 53 | } 54 | } 55 | 56 | val isMainHost = HostManager.simpleOsName().equals("${project.findProperty("project.mainOS")}", true) 57 | 58 | publishing { 59 | publications { 60 | val ghOwnerId: String = project.findProperty("gh.owner.id")!!.toString() 61 | val ghOwnerName: String = project.findProperty("gh.owner.name")!!.toString() 62 | val ghOwnerOrganization: String = project.findProperty("gh.owner.organization")!!.toString() 63 | val ghOwnerOrganizationUrl: String = project.findProperty("gh.owner.organization.url")!!.toString() 64 | withType { 65 | artifact(tasks["javadocJar"]) 66 | pom { 67 | name by project.name 68 | url by "https://github.com/$ghOwnerId/${rootProject.name}" 69 | description by provider { project.description } 70 | 71 | licenses { 72 | license { 73 | name by "The Apache License, Version 2.0" 74 | url by "https://www.apache.org/licenses/LICENSE-2.0.txt" 75 | distribution by "repo" 76 | } 77 | } 78 | 79 | developers { 80 | developer { 81 | id by ghOwnerId 82 | name by ghOwnerName 83 | organization by ghOwnerOrganization 84 | organizationUrl by ghOwnerOrganizationUrl 85 | } 86 | } 87 | 88 | scm { 89 | connection by "scm:git:git@github.com:$ghOwnerId/${rootProject.name.toLowerCase()}.git" 90 | url by "https://github.com/$ghOwnerId/${rootProject.name.toLowerCase()}" 91 | tag by Git.headCommitHash 92 | } 93 | } 94 | } 95 | 96 | repositories { 97 | maven("https://maven.pkg.github.com/$ghOwnerId/${rootProject.name}") { 98 | name = "GitHub" 99 | credentials { 100 | username = System.getenv("GH_USERNAME") 101 | password = System.getenv("GH_PASSWORD") 102 | } 103 | } 104 | maven("file://${rootProject.buildDir}/localMaven") { 105 | name = "Local" 106 | } 107 | } 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/util/KotlinTargetDetails.kt: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import org.jetbrains.kotlin.konan.target.Family 4 | import org.jetbrains.kotlin.konan.target.KonanTarget 5 | 6 | val KonanTarget.buildHost: Family 7 | get() = when (family) { 8 | Family.OSX, 9 | Family.IOS, 10 | Family.TVOS, 11 | Family.WATCHOS -> Family.OSX 12 | 13 | Family.ANDROID, 14 | Family.ZEPHYR, 15 | Family.WASM, 16 | Family.LINUX -> Family.LINUX 17 | 18 | Family.MINGW -> Family.MINGW 19 | } 20 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/util/_global.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("PackageDirectoryMismatch") 2 | 3 | import org.gradle.api.NamedDomainObjectContainer 4 | import org.gradle.api.NamedDomainObjectProvider 5 | import org.gradle.api.Project 6 | import org.gradle.api.provider.Property 7 | import org.gradle.api.provider.Provider 8 | import org.gradle.kotlin.dsl.named 9 | import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet 10 | import org.jetbrains.kotlin.konan.target.HostManager 11 | 12 | val NamedDomainObjectContainer.jsMain: NamedDomainObjectProvider 13 | get() = named("jsMain") 14 | 15 | val NamedDomainObjectContainer.jsTest: NamedDomainObjectProvider 16 | get() = named("jsTest") 17 | 18 | val NamedDomainObjectContainer.jvmMain: NamedDomainObjectProvider 19 | get() = named("jvmMain") 20 | 21 | val NamedDomainObjectContainer.jvmTest: NamedDomainObjectProvider 22 | get() = named("jvmTest") 23 | 24 | infix fun Property.by(value: T) = set(value) 25 | infix fun Property.by(value: Provider) = set(value) 26 | 27 | val CI = System.getenv("CI") != null 28 | val SANDBOX = System.getenv("SANDBOX") != null 29 | 30 | val Project.isMainHost: Boolean 31 | get() = HostManager.simpleOsName().equals("${properties["project.mainOS"]}", true) 32 | 33 | fun printlnCI(text: Any?) { 34 | if (CI) println("[CI]: $text") 35 | } 36 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/util/gradle.kt: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import java.nio.charset.Charset 4 | 5 | object Git { 6 | val headCommitHash by lazy { execAndCapture("git rev-parse --verify HEAD") } 7 | } 8 | 9 | fun execAndCapture(cmd: String): String? { 10 | val child = Runtime.getRuntime().exec(cmd) 11 | child.waitFor() 12 | return if (child.exitValue() == 0) { 13 | child.inputStream.readAllBytes().toString(Charset.defaultCharset()).trim() 14 | } else { 15 | null 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /build-conventions/src/main/kotlin/util/targetGroup.kt: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import org.gradle.api.Action 4 | import org.gradle.api.NamedDomainObjectContainer 5 | import org.gradle.kotlin.dsl.get 6 | import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension 7 | import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet 8 | import org.jetbrains.kotlin.gradle.plugin.KotlinTarget 9 | 10 | fun KotlinMultiplatformExtension.targetGroup( 11 | name: String, 12 | mainSourceSetTarget: KotlinSourceSet, 13 | testSourceSetTarget: KotlinSourceSet, 14 | vararg targets: T 15 | ): Pair { 16 | val mainName = "${name}Main" 17 | val testName = "${name}Test" 18 | val main = sourceSets.maybeCreate(mainName).apply { dependsOn(mainSourceSetTarget) } 19 | val test = sourceSets.maybeCreate(testName).apply { dependsOn(testSourceSetTarget) } 20 | targets.forEach { target -> 21 | target.compilations["main"].defaultSourceSet { dependsOn(main) } 22 | target.compilations["test"].defaultSourceSet { dependsOn(test) } 23 | } 24 | return main to test 25 | } 26 | 27 | fun KotlinMultiplatformExtension.targetGroup( 28 | name: String, 29 | mainSourceSetTarget: String, 30 | testSourceSetTarget: String, 31 | vararg targets: T 32 | ): Pair = targetGroup( 33 | name = name, 34 | mainSourceSetTarget = sourceSets.getByName(mainSourceSetTarget), 35 | testSourceSetTarget = sourceSets.getByName(testSourceSetTarget), 36 | targets = targets, 37 | ) 38 | 39 | fun NamedDomainObjectContainer.withName(name: String, action: Action) { 40 | matching { it.name == name }.all(action) 41 | } 42 | 43 | private fun NamedDomainObjectContainer.sharedSourceSets( 44 | vararg sourceSets: String, 45 | action: Action, 46 | ) { 47 | sourceSets.forEach { withName(it, action) } 48 | } 49 | 50 | fun NamedDomainObjectContainer.jvmCommonMain(action: Action) { 51 | sharedSourceSets("jvmCommonMain", "androidMain", action = action) 52 | } 53 | 54 | fun NamedDomainObjectContainer.jvmCommonTest(action: Action) { 55 | sharedSourceSets("jvmCommonTest", "androidUnitTest", action = action) 56 | } 57 | 58 | fun NamedDomainObjectContainer.blockingMain(action: Action) { 59 | sharedSourceSets("blockingMain", "androidMain", action = action) 60 | } 61 | 62 | fun NamedDomainObjectContainer.blockingTest(action: Action) { 63 | sharedSourceSets("blockingTest", "androidUnitTest", action = action) 64 | } 65 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("convention.common") 3 | id("convention.publishing-nexus") 4 | if (System.getenv("CI") == null) id("convention.git-hooks") 5 | } 6 | 7 | gradleEnterprise { 8 | buildScan { 9 | termsOfServiceUrl = "https://gradle.com/terms-of-service" 10 | termsOfServiceAgree = "yes" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | #======================================== Gradle ======================================== 2 | org.gradle.vfs.watch=true 3 | org.gradle.cache=true 4 | org.gradle.parallel=true 5 | org.gradle.jvmargs=-XX:MaxMetaspaceSize=2g -Xmx2g 6 | #======================================== Kotlin ======================================== 7 | kotlin.code.style=official 8 | kotlin.stdlib.default.dependency=true 9 | kotlin.js.generate.externals=false 10 | kotlin.js.compiler=ir 11 | kotlin.incremental.js=true 12 | kotlin.mpp.stability.nowarn=true 13 | kotlin.mpp.androidSourceSetLayoutVersion=2 14 | kotlin.native.ignoreDisabledTargets=true 15 | kotlin.js.browser.karma.browsers=chromium-headless 16 | #======================================== Android ======================================= 17 | android.disableAutomaticComponentCreation=true 18 | android.useAndroidX=true 19 | android.enableJetifier=true 20 | #======================================== GitHub ======================================== 21 | gh.owner.id=reduxkotlin 22 | gh.owner.name=reduxkotlin.org 23 | gh.owner.organization=ReduxKotlin.org 24 | gh.owner.organization.url=http://www.reduxkotlin.org 25 | #======================================= Project ======================================== 26 | group=org.reduxkotlin 27 | description=Redux thunmk implementation for Redux-Kotlin. Mulitiplatform supported. 28 | version=0.6.1-SNAPSHOT 29 | #======================================== Build ========================================= 30 | project.enableSnapshots=true 31 | # linux | macos | windows 32 | project.mainOS=linux -------------------------------------------------------------------------------- /gradle/detekt.yml: -------------------------------------------------------------------------------- 1 | config: 2 | warningsAsErrors: true 3 | 4 | complexity: 5 | active: true 6 | 7 | comments: 8 | active: true 9 | CommentOverPrivateFunction: 10 | active: false 11 | CommentOverPrivateProperty: 12 | active: false 13 | DeprecatedBlockTag: 14 | active: true 15 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 16 | ignoreAnnotated: [ kotlin.Deprecated ] 17 | OutdatedDocumentation: 18 | active: true 19 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 20 | ignoreAnnotated: [ kotlin.Deprecated ] 21 | allowParamOnConstructorProperties: false 22 | UndocumentedPublicClass: 23 | active: true 24 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 25 | ignoreAnnotated: [ kotlin.Deprecated ] 26 | UndocumentedPublicFunction: 27 | active: true 28 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 29 | ignoreAnnotated: [ kotlin.Deprecated ] 30 | UndocumentedPublicProperty: 31 | active: true 32 | ignoreAnnotated: [ kotlin.Deprecated ] 33 | excludes: [ "**/src/*Test/**", "**/examples/**", "**/build-conventions/**" ] 34 | 35 | naming: 36 | InvalidPackageDeclaration: 37 | active: false 38 | MatchingDeclarationName: 39 | active: false 40 | TopLevelPropertyNaming: 41 | constantPattern: '[A-Z][_a-zA-Z0-9]*' 42 | 43 | style: 44 | ForbiddenComment: 45 | active: false 46 | WildcardImport: 47 | active: false 48 | UnnecessaryAbstractClass: 49 | active: false 50 | MaxLineLength: 51 | active: false 52 | MagicNumber: 53 | active: false 54 | 55 | formatting: 56 | Filename: 57 | active: false 58 | NoWildcardImports: 59 | active: false 60 | Indentation: 61 | indentSize: 4 62 | FinalNewline: 63 | active: true 64 | -------------------------------------------------------------------------------- /gradle/versions.properties: -------------------------------------------------------------------------------- 1 | #### Dependencies and Plugin versions with their available updates. 2 | #### Generated by `./gradlew refreshVersions` version 0.51.0 3 | #### 4 | #### Don't manually edit or split the comments that start with four hashtags (####), 5 | #### they will be overwritten by refreshVersions. 6 | #### 7 | #### suppress inspection "SpellCheckingInspection" for whole file 8 | #### suppress inspection "UnusedProperty" for whole file 9 | #======================================= Plugins ======================================== 10 | plugin.android=7.3.1 11 | version.com.github.jakemarsden..git-hooks-gradle-plugin=0.0.2 12 | version.io.github.gradle-nexus..publish-plugin=1.1.0 13 | version.detekt=1.22.0 14 | version.org.jetbrains.dokka..dokka-gradle-plugin=1.7.20 15 | #====================================== Libraries ======================================= 16 | version.androidx.test.espresso=3.4.0 17 | version.androidx.test.rules=1.4.0 18 | version.androidx.test.runner=1.4.0 19 | version.kotlinx.serialization=1.3.3 20 | version.kotlinx.coroutines=1.6.4 21 | version.kotlin=1.8.0 22 | version.org.jetbrains.kotlinx..atomicfu=0.19.0 23 | version.org.jetbrains.kotlinx..atomicfu-gradle-plugin=0.19.0 24 | version.org.reduxkotlin..redux-kotlin=0.6.0 25 | -------------------------------------------------------------------------------- /gradle/versions.rules: -------------------------------------------------------------------------------- 1 | io.gitlab.arturbosch.detekt:* 2 | ^^^^^^ 3 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reduxkotlin/redux-kotlin-thunk/4080298c6ff0f05ff8c0d5ee3943c7a545ed6942/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Aug 28 09:20:22 EDT 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## Gradle start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/" >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="Gradle" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 84 | 85 | # Determine the Java command to use to start the JVM. 86 | if [ -n "$JAVA_HOME" ] ; then 87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 88 | # IBM's JDK on AIX uses strange locations for the executables 89 | JAVACMD="$JAVA_HOME/jre/sh/java" 90 | else 91 | JAVACMD="$JAVA_HOME/bin/java" 92 | fi 93 | if [ ! -x "$JAVACMD" ] ; then 94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 95 | 96 | Please set the JAVA_HOME variable in your environment to match the 97 | location of your Java installation." 98 | fi 99 | else 100 | JAVACMD="java" 101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 102 | 103 | Please set the JAVA_HOME variable in your environment to match the 104 | location of your Java installation." 105 | fi 106 | 107 | # Increase the maximum file descriptors if we can. 108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 109 | MAX_FD_LIMIT=`ulimit -H -n` 110 | if [ $? -eq 0 ] ; then 111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 112 | MAX_FD="$MAX_FD_LIMIT" 113 | fi 114 | ulimit -n $MAX_FD 115 | if [ $? -ne 0 ] ; then 116 | warn "Could not set maximum file descriptor limit: $MAX_FD" 117 | fi 118 | else 119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 120 | fi 121 | fi 122 | 123 | # For Darwin, add options to specify how the application appears in the dock 124 | if $darwin; then 125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 126 | fi 127 | 128 | # For Cygwin, switch paths to Windows format before running java 129 | if $cygwin ; then 130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 132 | JAVACMD=`cygpath --unix "$JAVACMD"` 133 | 134 | # We build the pattern for arguments to be converted via cygpath 135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 136 | SEP="" 137 | for dir in $ROOTDIRSRAW ; do 138 | ROOTDIRS="$ROOTDIRS$SEP$dir" 139 | SEP="|" 140 | done 141 | OURCYGPATTERN="(^($ROOTDIRS))" 142 | # Add a user-defined pattern to the cygpath arguments 143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 145 | fi 146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 147 | i=0 148 | for arg in "$@" ; do 149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 151 | 152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 154 | else 155 | eval `echo args$i`="\"$arg\"" 156 | fi 157 | i=$((i+1)) 158 | done 159 | case $i in 160 | (0) set -- ;; 161 | (1) set -- "$args0" ;; 162 | (2) set -- "$args0" "$args1" ;; 163 | (3) set -- "$args0" "$args1" "$args2" ;; 164 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 165 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 166 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 167 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 168 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 169 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 170 | esac 171 | fi 172 | 173 | # Escape application args 174 | save () { 175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 176 | echo " " 177 | } 178 | APP_ARGS=$(save "$@") 179 | 180 | # Collect all arguments for the java command, following the shell quoting and substitution rules 181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 182 | 183 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 184 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 185 | cd "$(dirname "$0")" 186 | fi 187 | 188 | exec "$JAVACMD" "$@" 189 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem http://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 33 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 34 | 35 | @rem Find java.exe 36 | if defined JAVA_HOME goto findJavaFromJavaHome 37 | 38 | set JAVA_EXE=java.exe 39 | %JAVA_EXE% -version >NUL 2>&1 40 | if "%ERRORLEVEL%" == "0" goto init 41 | 42 | echo. 43 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 44 | echo. 45 | echo Please set the JAVA_HOME variable in your environment to match the 46 | echo location of your Java installation. 47 | 48 | goto fail 49 | 50 | :findJavaFromJavaHome 51 | set JAVA_HOME=%JAVA_HOME:"=% 52 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 53 | 54 | if exist "%JAVA_EXE%" goto init 55 | 56 | echo. 57 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 58 | echo. 59 | echo Please set the JAVA_HOME variable in your environment to match the 60 | echo location of your Java installation. 61 | 62 | goto fail 63 | 64 | :init 65 | @rem Get command-line arguments, handling Windows variants 66 | 67 | if not "%OS%" == "Windows_NT" goto win9xME_args 68 | 69 | :win9xME_args 70 | @rem Slurp the command line arguments. 71 | set CMD_LINE_ARGS= 72 | set _SKIP=2 73 | 74 | :win9xME_args_slurp 75 | if "x%~1" == "x" goto execute 76 | 77 | set CMD_LINE_ARGS=%* 78 | 79 | :execute 80 | @rem Setup the command line 81 | 82 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 83 | 84 | @rem Execute Gradle 85 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 86 | 87 | :end 88 | @rem End local scope for the variables with windows NT shell 89 | if "%ERRORLEVEL%"=="0" goto mainEnd 90 | 91 | :fail 92 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 93 | rem the _cmd.exe /c_ return code! 94 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 95 | exit /b 1 96 | 97 | :mainEnd 98 | if "%OS%"=="Windows_NT" endlocal 99 | 100 | :omega 101 | -------------------------------------------------------------------------------- /kotlin-js-store/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@colors/colors@1.5.0": 6 | version "1.5.0" 7 | resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" 8 | integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== 9 | 10 | "@discoveryjs/json-ext@^0.5.0": 11 | version "0.5.7" 12 | resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" 13 | integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== 14 | 15 | "@jridgewell/gen-mapping@^0.3.0": 16 | version "0.3.2" 17 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" 18 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== 19 | dependencies: 20 | "@jridgewell/set-array" "^1.0.1" 21 | "@jridgewell/sourcemap-codec" "^1.4.10" 22 | "@jridgewell/trace-mapping" "^0.3.9" 23 | 24 | "@jridgewell/resolve-uri@3.1.0": 25 | version "3.1.0" 26 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 27 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 28 | 29 | "@jridgewell/set-array@^1.0.1": 30 | version "1.1.2" 31 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 32 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 33 | 34 | "@jridgewell/source-map@^0.3.2": 35 | version "0.3.2" 36 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" 37 | integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== 38 | dependencies: 39 | "@jridgewell/gen-mapping" "^0.3.0" 40 | "@jridgewell/trace-mapping" "^0.3.9" 41 | 42 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": 43 | version "1.4.14" 44 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 45 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 46 | 47 | "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": 48 | version "0.3.17" 49 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" 50 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== 51 | dependencies: 52 | "@jridgewell/resolve-uri" "3.1.0" 53 | "@jridgewell/sourcemap-codec" "1.4.14" 54 | 55 | "@socket.io/component-emitter@~3.1.0": 56 | version "3.1.0" 57 | resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" 58 | integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== 59 | 60 | "@types/cookie@^0.4.1": 61 | version "0.4.1" 62 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" 63 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== 64 | 65 | "@types/cors@^2.8.12": 66 | version "2.8.13" 67 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" 68 | integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== 69 | dependencies: 70 | "@types/node" "*" 71 | 72 | "@types/eslint-scope@^3.7.3": 73 | version "3.7.4" 74 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" 75 | integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== 76 | dependencies: 77 | "@types/eslint" "*" 78 | "@types/estree" "*" 79 | 80 | "@types/eslint@*": 81 | version "8.4.10" 82 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb" 83 | integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== 84 | dependencies: 85 | "@types/estree" "*" 86 | "@types/json-schema" "*" 87 | 88 | "@types/estree@*": 89 | version "1.0.0" 90 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" 91 | integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== 92 | 93 | "@types/estree@^0.0.51": 94 | version "0.0.51" 95 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" 96 | integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== 97 | 98 | "@types/json-schema@*", "@types/json-schema@^7.0.8": 99 | version "7.0.11" 100 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 101 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 102 | 103 | "@types/node@*", "@types/node@>=10.0.0": 104 | version "18.11.18" 105 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" 106 | integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== 107 | 108 | "@ungap/promise-all-settled@1.1.2": 109 | version "1.1.2" 110 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 111 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 112 | 113 | "@webassemblyjs/ast@1.11.1": 114 | version "1.11.1" 115 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" 116 | integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== 117 | dependencies: 118 | "@webassemblyjs/helper-numbers" "1.11.1" 119 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 120 | 121 | "@webassemblyjs/floating-point-hex-parser@1.11.1": 122 | version "1.11.1" 123 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" 124 | integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== 125 | 126 | "@webassemblyjs/helper-api-error@1.11.1": 127 | version "1.11.1" 128 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" 129 | integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== 130 | 131 | "@webassemblyjs/helper-buffer@1.11.1": 132 | version "1.11.1" 133 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" 134 | integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== 135 | 136 | "@webassemblyjs/helper-numbers@1.11.1": 137 | version "1.11.1" 138 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" 139 | integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== 140 | dependencies: 141 | "@webassemblyjs/floating-point-hex-parser" "1.11.1" 142 | "@webassemblyjs/helper-api-error" "1.11.1" 143 | "@xtuc/long" "4.2.2" 144 | 145 | "@webassemblyjs/helper-wasm-bytecode@1.11.1": 146 | version "1.11.1" 147 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" 148 | integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== 149 | 150 | "@webassemblyjs/helper-wasm-section@1.11.1": 151 | version "1.11.1" 152 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" 153 | integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== 154 | dependencies: 155 | "@webassemblyjs/ast" "1.11.1" 156 | "@webassemblyjs/helper-buffer" "1.11.1" 157 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 158 | "@webassemblyjs/wasm-gen" "1.11.1" 159 | 160 | "@webassemblyjs/ieee754@1.11.1": 161 | version "1.11.1" 162 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" 163 | integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== 164 | dependencies: 165 | "@xtuc/ieee754" "^1.2.0" 166 | 167 | "@webassemblyjs/leb128@1.11.1": 168 | version "1.11.1" 169 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" 170 | integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== 171 | dependencies: 172 | "@xtuc/long" "4.2.2" 173 | 174 | "@webassemblyjs/utf8@1.11.1": 175 | version "1.11.1" 176 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" 177 | integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== 178 | 179 | "@webassemblyjs/wasm-edit@1.11.1": 180 | version "1.11.1" 181 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" 182 | integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== 183 | dependencies: 184 | "@webassemblyjs/ast" "1.11.1" 185 | "@webassemblyjs/helper-buffer" "1.11.1" 186 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 187 | "@webassemblyjs/helper-wasm-section" "1.11.1" 188 | "@webassemblyjs/wasm-gen" "1.11.1" 189 | "@webassemblyjs/wasm-opt" "1.11.1" 190 | "@webassemblyjs/wasm-parser" "1.11.1" 191 | "@webassemblyjs/wast-printer" "1.11.1" 192 | 193 | "@webassemblyjs/wasm-gen@1.11.1": 194 | version "1.11.1" 195 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" 196 | integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== 197 | dependencies: 198 | "@webassemblyjs/ast" "1.11.1" 199 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 200 | "@webassemblyjs/ieee754" "1.11.1" 201 | "@webassemblyjs/leb128" "1.11.1" 202 | "@webassemblyjs/utf8" "1.11.1" 203 | 204 | "@webassemblyjs/wasm-opt@1.11.1": 205 | version "1.11.1" 206 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" 207 | integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== 208 | dependencies: 209 | "@webassemblyjs/ast" "1.11.1" 210 | "@webassemblyjs/helper-buffer" "1.11.1" 211 | "@webassemblyjs/wasm-gen" "1.11.1" 212 | "@webassemblyjs/wasm-parser" "1.11.1" 213 | 214 | "@webassemblyjs/wasm-parser@1.11.1": 215 | version "1.11.1" 216 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" 217 | integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== 218 | dependencies: 219 | "@webassemblyjs/ast" "1.11.1" 220 | "@webassemblyjs/helper-api-error" "1.11.1" 221 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 222 | "@webassemblyjs/ieee754" "1.11.1" 223 | "@webassemblyjs/leb128" "1.11.1" 224 | "@webassemblyjs/utf8" "1.11.1" 225 | 226 | "@webassemblyjs/wast-printer@1.11.1": 227 | version "1.11.1" 228 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" 229 | integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== 230 | dependencies: 231 | "@webassemblyjs/ast" "1.11.1" 232 | "@xtuc/long" "4.2.2" 233 | 234 | "@webpack-cli/configtest@^1.2.0": 235 | version "1.2.0" 236 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" 237 | integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== 238 | 239 | "@webpack-cli/info@^1.5.0": 240 | version "1.5.0" 241 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" 242 | integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== 243 | dependencies: 244 | envinfo "^7.7.3" 245 | 246 | "@webpack-cli/serve@^1.7.0": 247 | version "1.7.0" 248 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" 249 | integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== 250 | 251 | "@xtuc/ieee754@^1.2.0": 252 | version "1.2.0" 253 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 254 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 255 | 256 | "@xtuc/long@4.2.2": 257 | version "4.2.2" 258 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" 259 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== 260 | 261 | abab@^2.0.6: 262 | version "2.0.6" 263 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" 264 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== 265 | 266 | accepts@~1.3.4: 267 | version "1.3.8" 268 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 269 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 270 | dependencies: 271 | mime-types "~2.1.34" 272 | negotiator "0.6.3" 273 | 274 | acorn-import-assertions@^1.7.6: 275 | version "1.8.0" 276 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" 277 | integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== 278 | 279 | acorn@^8.5.0, acorn@^8.7.1: 280 | version "8.8.2" 281 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" 282 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== 283 | 284 | ajv-keywords@^3.5.2: 285 | version "3.5.2" 286 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 287 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 288 | 289 | ajv@^6.12.5: 290 | version "6.12.6" 291 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 292 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 293 | dependencies: 294 | fast-deep-equal "^3.1.1" 295 | fast-json-stable-stringify "^2.0.0" 296 | json-schema-traverse "^0.4.1" 297 | uri-js "^4.2.2" 298 | 299 | ansi-colors@4.1.1: 300 | version "4.1.1" 301 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 302 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 303 | 304 | ansi-regex@^5.0.1: 305 | version "5.0.1" 306 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 307 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 308 | 309 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 310 | version "4.3.0" 311 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 312 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 313 | dependencies: 314 | color-convert "^2.0.1" 315 | 316 | anymatch@~3.1.2: 317 | version "3.1.3" 318 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 319 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 320 | dependencies: 321 | normalize-path "^3.0.0" 322 | picomatch "^2.0.4" 323 | 324 | argparse@^2.0.1: 325 | version "2.0.1" 326 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 327 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 328 | 329 | balanced-match@^1.0.0: 330 | version "1.0.2" 331 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 332 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 333 | 334 | base64id@2.0.0, base64id@~2.0.0: 335 | version "2.0.0" 336 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" 337 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== 338 | 339 | binary-extensions@^2.0.0: 340 | version "2.2.0" 341 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 342 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 343 | 344 | body-parser@^1.19.0: 345 | version "1.20.1" 346 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 347 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 348 | dependencies: 349 | bytes "3.1.2" 350 | content-type "~1.0.4" 351 | debug "2.6.9" 352 | depd "2.0.0" 353 | destroy "1.2.0" 354 | http-errors "2.0.0" 355 | iconv-lite "0.4.24" 356 | on-finished "2.4.1" 357 | qs "6.11.0" 358 | raw-body "2.5.1" 359 | type-is "~1.6.18" 360 | unpipe "1.0.0" 361 | 362 | brace-expansion@^1.1.7: 363 | version "1.1.11" 364 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 365 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 366 | dependencies: 367 | balanced-match "^1.0.0" 368 | concat-map "0.0.1" 369 | 370 | brace-expansion@^2.0.1: 371 | version "2.0.1" 372 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 373 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 374 | dependencies: 375 | balanced-match "^1.0.0" 376 | 377 | braces@^3.0.2, braces@~3.0.2: 378 | version "3.0.2" 379 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 380 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 381 | dependencies: 382 | fill-range "^7.0.1" 383 | 384 | browser-stdout@1.3.1: 385 | version "1.3.1" 386 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 387 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 388 | 389 | browserslist@^4.14.5: 390 | version "4.21.4" 391 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" 392 | integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== 393 | dependencies: 394 | caniuse-lite "^1.0.30001400" 395 | electron-to-chromium "^1.4.251" 396 | node-releases "^2.0.6" 397 | update-browserslist-db "^1.0.9" 398 | 399 | buffer-from@^1.0.0: 400 | version "1.1.2" 401 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 402 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 403 | 404 | bytes@3.1.2: 405 | version "3.1.2" 406 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 407 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 408 | 409 | call-bind@^1.0.0: 410 | version "1.0.2" 411 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 412 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 413 | dependencies: 414 | function-bind "^1.1.1" 415 | get-intrinsic "^1.0.2" 416 | 417 | camelcase@^6.0.0: 418 | version "6.3.0" 419 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 420 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 421 | 422 | caniuse-lite@^1.0.30001400: 423 | version "1.0.30001449" 424 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz#a8d11f6a814c75c9ce9d851dc53eb1d1dfbcd657" 425 | integrity sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw== 426 | 427 | chalk@^4.1.0: 428 | version "4.1.2" 429 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 430 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 431 | dependencies: 432 | ansi-styles "^4.1.0" 433 | supports-color "^7.1.0" 434 | 435 | chokidar@3.5.3, chokidar@^3.5.1: 436 | version "3.5.3" 437 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 438 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 439 | dependencies: 440 | anymatch "~3.1.2" 441 | braces "~3.0.2" 442 | glob-parent "~5.1.2" 443 | is-binary-path "~2.1.0" 444 | is-glob "~4.0.1" 445 | normalize-path "~3.0.0" 446 | readdirp "~3.6.0" 447 | optionalDependencies: 448 | fsevents "~2.3.2" 449 | 450 | chrome-trace-event@^1.0.2: 451 | version "1.0.3" 452 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" 453 | integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== 454 | 455 | cliui@^7.0.2: 456 | version "7.0.4" 457 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 458 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 459 | dependencies: 460 | string-width "^4.2.0" 461 | strip-ansi "^6.0.0" 462 | wrap-ansi "^7.0.0" 463 | 464 | clone-deep@^4.0.1: 465 | version "4.0.1" 466 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" 467 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== 468 | dependencies: 469 | is-plain-object "^2.0.4" 470 | kind-of "^6.0.2" 471 | shallow-clone "^3.0.0" 472 | 473 | color-convert@^2.0.1: 474 | version "2.0.1" 475 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 476 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 477 | dependencies: 478 | color-name "~1.1.4" 479 | 480 | color-name@~1.1.4: 481 | version "1.1.4" 482 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 483 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 484 | 485 | colorette@^2.0.14: 486 | version "2.0.19" 487 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" 488 | integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== 489 | 490 | commander@^2.20.0: 491 | version "2.20.3" 492 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 493 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 494 | 495 | commander@^7.0.0: 496 | version "7.2.0" 497 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 498 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 499 | 500 | concat-map@0.0.1: 501 | version "0.0.1" 502 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 503 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 504 | 505 | connect@^3.7.0: 506 | version "3.7.0" 507 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" 508 | integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== 509 | dependencies: 510 | debug "2.6.9" 511 | finalhandler "1.1.2" 512 | parseurl "~1.3.3" 513 | utils-merge "1.0.1" 514 | 515 | content-type@~1.0.4: 516 | version "1.0.4" 517 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 518 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 519 | 520 | cookie@~0.4.1: 521 | version "0.4.2" 522 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" 523 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== 524 | 525 | cors@~2.8.5: 526 | version "2.8.5" 527 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 528 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 529 | dependencies: 530 | object-assign "^4" 531 | vary "^1" 532 | 533 | cross-spawn@^7.0.3: 534 | version "7.0.3" 535 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 536 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 537 | dependencies: 538 | path-key "^3.1.0" 539 | shebang-command "^2.0.0" 540 | which "^2.0.1" 541 | 542 | custom-event@~1.0.0: 543 | version "1.0.1" 544 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" 545 | integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== 546 | 547 | date-format@^4.0.14: 548 | version "4.0.14" 549 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" 550 | integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== 551 | 552 | debug@2.6.9: 553 | version "2.6.9" 554 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 555 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 556 | dependencies: 557 | ms "2.0.0" 558 | 559 | debug@4.3.4, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: 560 | version "4.3.4" 561 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 562 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 563 | dependencies: 564 | ms "2.1.2" 565 | 566 | decamelize@^4.0.0: 567 | version "4.0.0" 568 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 569 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 570 | 571 | depd@2.0.0: 572 | version "2.0.0" 573 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 574 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 575 | 576 | destroy@1.2.0: 577 | version "1.2.0" 578 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 579 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 580 | 581 | di@^0.0.1: 582 | version "0.0.1" 583 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" 584 | integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== 585 | 586 | diff@5.0.0: 587 | version "5.0.0" 588 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 589 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 590 | 591 | dom-serialize@^2.2.1: 592 | version "2.2.1" 593 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" 594 | integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== 595 | dependencies: 596 | custom-event "~1.0.0" 597 | ent "~2.2.0" 598 | extend "^3.0.0" 599 | void-elements "^2.0.0" 600 | 601 | ee-first@1.1.1: 602 | version "1.1.1" 603 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 604 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 605 | 606 | electron-to-chromium@^1.4.251: 607 | version "1.4.284" 608 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" 609 | integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== 610 | 611 | emoji-regex@^8.0.0: 612 | version "8.0.0" 613 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 614 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 615 | 616 | encodeurl@~1.0.2: 617 | version "1.0.2" 618 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 619 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 620 | 621 | engine.io-parser@~5.0.3: 622 | version "5.0.6" 623 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45" 624 | integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw== 625 | 626 | engine.io@~6.2.1: 627 | version "6.2.1" 628 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.1.tgz#e3f7826ebc4140db9bbaa9021ad6b1efb175878f" 629 | integrity sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA== 630 | dependencies: 631 | "@types/cookie" "^0.4.1" 632 | "@types/cors" "^2.8.12" 633 | "@types/node" ">=10.0.0" 634 | accepts "~1.3.4" 635 | base64id "2.0.0" 636 | cookie "~0.4.1" 637 | cors "~2.8.5" 638 | debug "~4.3.1" 639 | engine.io-parser "~5.0.3" 640 | ws "~8.2.3" 641 | 642 | enhanced-resolve@^5.10.0: 643 | version "5.12.0" 644 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" 645 | integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== 646 | dependencies: 647 | graceful-fs "^4.2.4" 648 | tapable "^2.2.0" 649 | 650 | ent@~2.2.0: 651 | version "2.2.0" 652 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" 653 | integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== 654 | 655 | envinfo@^7.7.3: 656 | version "7.8.1" 657 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" 658 | integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== 659 | 660 | es-module-lexer@^0.9.0: 661 | version "0.9.3" 662 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" 663 | integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== 664 | 665 | escalade@^3.1.1: 666 | version "3.1.1" 667 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 668 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 669 | 670 | escape-html@~1.0.3: 671 | version "1.0.3" 672 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 673 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 674 | 675 | escape-string-regexp@4.0.0: 676 | version "4.0.0" 677 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 678 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 679 | 680 | eslint-scope@5.1.1: 681 | version "5.1.1" 682 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 683 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 684 | dependencies: 685 | esrecurse "^4.3.0" 686 | estraverse "^4.1.1" 687 | 688 | esrecurse@^4.3.0: 689 | version "4.3.0" 690 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 691 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 692 | dependencies: 693 | estraverse "^5.2.0" 694 | 695 | estraverse@^4.1.1: 696 | version "4.3.0" 697 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 698 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 699 | 700 | estraverse@^5.2.0: 701 | version "5.3.0" 702 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 703 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 704 | 705 | eventemitter3@^4.0.0: 706 | version "4.0.7" 707 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 708 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 709 | 710 | events@^3.2.0: 711 | version "3.3.0" 712 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 713 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 714 | 715 | extend@^3.0.0: 716 | version "3.0.2" 717 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 718 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 719 | 720 | fast-deep-equal@^3.1.1: 721 | version "3.1.3" 722 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 723 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 724 | 725 | fast-json-stable-stringify@^2.0.0: 726 | version "2.1.0" 727 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 728 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 729 | 730 | fastest-levenshtein@^1.0.12: 731 | version "1.0.16" 732 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" 733 | integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== 734 | 735 | fill-range@^7.0.1: 736 | version "7.0.1" 737 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 738 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 739 | dependencies: 740 | to-regex-range "^5.0.1" 741 | 742 | finalhandler@1.1.2: 743 | version "1.1.2" 744 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 745 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 746 | dependencies: 747 | debug "2.6.9" 748 | encodeurl "~1.0.2" 749 | escape-html "~1.0.3" 750 | on-finished "~2.3.0" 751 | parseurl "~1.3.3" 752 | statuses "~1.5.0" 753 | unpipe "~1.0.0" 754 | 755 | find-up@5.0.0: 756 | version "5.0.0" 757 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 758 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 759 | dependencies: 760 | locate-path "^6.0.0" 761 | path-exists "^4.0.0" 762 | 763 | find-up@^4.0.0: 764 | version "4.1.0" 765 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 766 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 767 | dependencies: 768 | locate-path "^5.0.0" 769 | path-exists "^4.0.0" 770 | 771 | flat@^5.0.2: 772 | version "5.0.2" 773 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 774 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 775 | 776 | flatted@^3.2.7: 777 | version "3.2.7" 778 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 779 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 780 | 781 | follow-redirects@^1.0.0: 782 | version "1.15.2" 783 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 784 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 785 | 786 | format-util@1.0.5: 787 | version "1.0.5" 788 | resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" 789 | integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== 790 | 791 | fs-extra@^8.1.0: 792 | version "8.1.0" 793 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 794 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 795 | dependencies: 796 | graceful-fs "^4.2.0" 797 | jsonfile "^4.0.0" 798 | universalify "^0.1.0" 799 | 800 | fs.realpath@^1.0.0: 801 | version "1.0.0" 802 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 803 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 804 | 805 | fsevents@~2.3.2: 806 | version "2.3.2" 807 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 808 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 809 | 810 | function-bind@^1.1.1: 811 | version "1.1.1" 812 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 813 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 814 | 815 | get-caller-file@^2.0.5: 816 | version "2.0.5" 817 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 818 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 819 | 820 | get-intrinsic@^1.0.2: 821 | version "1.2.0" 822 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" 823 | integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== 824 | dependencies: 825 | function-bind "^1.1.1" 826 | has "^1.0.3" 827 | has-symbols "^1.0.3" 828 | 829 | glob-parent@~5.1.2: 830 | version "5.1.2" 831 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 832 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 833 | dependencies: 834 | is-glob "^4.0.1" 835 | 836 | glob-to-regexp@^0.4.1: 837 | version "0.4.1" 838 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 839 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 840 | 841 | glob@7.2.0: 842 | version "7.2.0" 843 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 844 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 845 | dependencies: 846 | fs.realpath "^1.0.0" 847 | inflight "^1.0.4" 848 | inherits "2" 849 | minimatch "^3.0.4" 850 | once "^1.3.0" 851 | path-is-absolute "^1.0.0" 852 | 853 | glob@^7.1.3, glob@^7.1.7: 854 | version "7.2.3" 855 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 856 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 857 | dependencies: 858 | fs.realpath "^1.0.0" 859 | inflight "^1.0.4" 860 | inherits "2" 861 | minimatch "^3.1.1" 862 | once "^1.3.0" 863 | path-is-absolute "^1.0.0" 864 | 865 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: 866 | version "4.2.10" 867 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 868 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 869 | 870 | has-flag@^4.0.0: 871 | version "4.0.0" 872 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 873 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 874 | 875 | has-symbols@^1.0.3: 876 | version "1.0.3" 877 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 878 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 879 | 880 | has@^1.0.3: 881 | version "1.0.3" 882 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 883 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 884 | dependencies: 885 | function-bind "^1.1.1" 886 | 887 | he@1.2.0: 888 | version "1.2.0" 889 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 890 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 891 | 892 | http-errors@2.0.0: 893 | version "2.0.0" 894 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 895 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 896 | dependencies: 897 | depd "2.0.0" 898 | inherits "2.0.4" 899 | setprototypeof "1.2.0" 900 | statuses "2.0.1" 901 | toidentifier "1.0.1" 902 | 903 | http-proxy@^1.18.1: 904 | version "1.18.1" 905 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" 906 | integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== 907 | dependencies: 908 | eventemitter3 "^4.0.0" 909 | follow-redirects "^1.0.0" 910 | requires-port "^1.0.0" 911 | 912 | iconv-lite@0.4.24: 913 | version "0.4.24" 914 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 915 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 916 | dependencies: 917 | safer-buffer ">= 2.1.2 < 3" 918 | 919 | iconv-lite@^0.6.3: 920 | version "0.6.3" 921 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 922 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 923 | dependencies: 924 | safer-buffer ">= 2.1.2 < 3.0.0" 925 | 926 | import-local@^3.0.2: 927 | version "3.1.0" 928 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 929 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 930 | dependencies: 931 | pkg-dir "^4.2.0" 932 | resolve-cwd "^3.0.0" 933 | 934 | inflight@^1.0.4: 935 | version "1.0.6" 936 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 937 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 938 | dependencies: 939 | once "^1.3.0" 940 | wrappy "1" 941 | 942 | inherits@2, inherits@2.0.4: 943 | version "2.0.4" 944 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 945 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 946 | 947 | interpret@^2.2.0: 948 | version "2.2.0" 949 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" 950 | integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== 951 | 952 | is-binary-path@~2.1.0: 953 | version "2.1.0" 954 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 955 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 956 | dependencies: 957 | binary-extensions "^2.0.0" 958 | 959 | is-core-module@^2.9.0: 960 | version "2.11.0" 961 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 962 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 963 | dependencies: 964 | has "^1.0.3" 965 | 966 | is-extglob@^2.1.1: 967 | version "2.1.1" 968 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 969 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 970 | 971 | is-fullwidth-code-point@^3.0.0: 972 | version "3.0.0" 973 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 974 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 975 | 976 | is-glob@^4.0.1, is-glob@~4.0.1: 977 | version "4.0.3" 978 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 979 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 980 | dependencies: 981 | is-extglob "^2.1.1" 982 | 983 | is-number@^7.0.0: 984 | version "7.0.0" 985 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 986 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 987 | 988 | is-plain-obj@^2.1.0: 989 | version "2.1.0" 990 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 991 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 992 | 993 | is-plain-object@^2.0.4: 994 | version "2.0.4" 995 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 996 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 997 | dependencies: 998 | isobject "^3.0.1" 999 | 1000 | is-unicode-supported@^0.1.0: 1001 | version "0.1.0" 1002 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1003 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1004 | 1005 | isbinaryfile@^4.0.8: 1006 | version "4.0.10" 1007 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" 1008 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== 1009 | 1010 | isexe@^2.0.0: 1011 | version "2.0.0" 1012 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1013 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1014 | 1015 | isobject@^3.0.1: 1016 | version "3.0.1" 1017 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1018 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== 1019 | 1020 | jest-worker@^27.4.5: 1021 | version "27.5.1" 1022 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 1023 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 1024 | dependencies: 1025 | "@types/node" "*" 1026 | merge-stream "^2.0.0" 1027 | supports-color "^8.0.0" 1028 | 1029 | js-yaml@4.1.0: 1030 | version "4.1.0" 1031 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1032 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1033 | dependencies: 1034 | argparse "^2.0.1" 1035 | 1036 | json-parse-even-better-errors@^2.3.1: 1037 | version "2.3.1" 1038 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1039 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1040 | 1041 | json-schema-traverse@^0.4.1: 1042 | version "0.4.1" 1043 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1044 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1045 | 1046 | jsonfile@^4.0.0: 1047 | version "4.0.0" 1048 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1049 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 1050 | optionalDependencies: 1051 | graceful-fs "^4.1.6" 1052 | 1053 | karma-chrome-launcher@3.1.1: 1054 | version "3.1.1" 1055 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz#baca9cc071b1562a1db241827257bfe5cab597ea" 1056 | integrity sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ== 1057 | dependencies: 1058 | which "^1.2.1" 1059 | 1060 | karma-mocha@2.0.1: 1061 | version "2.0.1" 1062 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" 1063 | integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== 1064 | dependencies: 1065 | minimist "^1.2.3" 1066 | 1067 | karma-sourcemap-loader@0.3.8: 1068 | version "0.3.8" 1069 | resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz#d4bae72fb7a8397328a62b75013d2df937bdcf9c" 1070 | integrity sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g== 1071 | dependencies: 1072 | graceful-fs "^4.1.2" 1073 | 1074 | karma-webpack@5.0.0: 1075 | version "5.0.0" 1076 | resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" 1077 | integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== 1078 | dependencies: 1079 | glob "^7.1.3" 1080 | minimatch "^3.0.4" 1081 | webpack-merge "^4.1.5" 1082 | 1083 | karma@6.4.0: 1084 | version "6.4.0" 1085 | resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.0.tgz#82652dfecdd853ec227b74ed718a997028a99508" 1086 | integrity sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w== 1087 | dependencies: 1088 | "@colors/colors" "1.5.0" 1089 | body-parser "^1.19.0" 1090 | braces "^3.0.2" 1091 | chokidar "^3.5.1" 1092 | connect "^3.7.0" 1093 | di "^0.0.1" 1094 | dom-serialize "^2.2.1" 1095 | glob "^7.1.7" 1096 | graceful-fs "^4.2.6" 1097 | http-proxy "^1.18.1" 1098 | isbinaryfile "^4.0.8" 1099 | lodash "^4.17.21" 1100 | log4js "^6.4.1" 1101 | mime "^2.5.2" 1102 | minimatch "^3.0.4" 1103 | mkdirp "^0.5.5" 1104 | qjobs "^1.2.0" 1105 | range-parser "^1.2.1" 1106 | rimraf "^3.0.2" 1107 | socket.io "^4.4.1" 1108 | source-map "^0.6.1" 1109 | tmp "^0.2.1" 1110 | ua-parser-js "^0.7.30" 1111 | yargs "^16.1.1" 1112 | 1113 | kind-of@^6.0.2: 1114 | version "6.0.3" 1115 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1116 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1117 | 1118 | loader-runner@^4.2.0: 1119 | version "4.3.0" 1120 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" 1121 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== 1122 | 1123 | locate-path@^5.0.0: 1124 | version "5.0.0" 1125 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1126 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1127 | dependencies: 1128 | p-locate "^4.1.0" 1129 | 1130 | locate-path@^6.0.0: 1131 | version "6.0.0" 1132 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1133 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1134 | dependencies: 1135 | p-locate "^5.0.0" 1136 | 1137 | lodash@^4.17.15, lodash@^4.17.21: 1138 | version "4.17.21" 1139 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1140 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1141 | 1142 | log-symbols@4.1.0: 1143 | version "4.1.0" 1144 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1145 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1146 | dependencies: 1147 | chalk "^4.1.0" 1148 | is-unicode-supported "^0.1.0" 1149 | 1150 | log4js@^6.4.1: 1151 | version "6.7.1" 1152 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.7.1.tgz#06e12b1ac915dd1067146ffad8215f666f7d2c51" 1153 | integrity sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ== 1154 | dependencies: 1155 | date-format "^4.0.14" 1156 | debug "^4.3.4" 1157 | flatted "^3.2.7" 1158 | rfdc "^1.3.0" 1159 | streamroller "^3.1.3" 1160 | 1161 | media-typer@0.3.0: 1162 | version "0.3.0" 1163 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1164 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1165 | 1166 | merge-stream@^2.0.0: 1167 | version "2.0.0" 1168 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1169 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1170 | 1171 | mime-db@1.52.0: 1172 | version "1.52.0" 1173 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1174 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1175 | 1176 | mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: 1177 | version "2.1.35" 1178 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1179 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1180 | dependencies: 1181 | mime-db "1.52.0" 1182 | 1183 | mime@^2.5.2: 1184 | version "2.6.0" 1185 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 1186 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 1187 | 1188 | minimatch@5.0.1: 1189 | version "5.0.1" 1190 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 1191 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 1192 | dependencies: 1193 | brace-expansion "^2.0.1" 1194 | 1195 | minimatch@^3.0.4, minimatch@^3.1.1: 1196 | version "3.1.2" 1197 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1198 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1199 | dependencies: 1200 | brace-expansion "^1.1.7" 1201 | 1202 | minimist@^1.2.3, minimist@^1.2.6: 1203 | version "1.2.7" 1204 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 1205 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 1206 | 1207 | mkdirp@^0.5.5: 1208 | version "0.5.6" 1209 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 1210 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 1211 | dependencies: 1212 | minimist "^1.2.6" 1213 | 1214 | mocha@10.0.0: 1215 | version "10.0.0" 1216 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" 1217 | integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== 1218 | dependencies: 1219 | "@ungap/promise-all-settled" "1.1.2" 1220 | ansi-colors "4.1.1" 1221 | browser-stdout "1.3.1" 1222 | chokidar "3.5.3" 1223 | debug "4.3.4" 1224 | diff "5.0.0" 1225 | escape-string-regexp "4.0.0" 1226 | find-up "5.0.0" 1227 | glob "7.2.0" 1228 | he "1.2.0" 1229 | js-yaml "4.1.0" 1230 | log-symbols "4.1.0" 1231 | minimatch "5.0.1" 1232 | ms "2.1.3" 1233 | nanoid "3.3.3" 1234 | serialize-javascript "6.0.0" 1235 | strip-json-comments "3.1.1" 1236 | supports-color "8.1.1" 1237 | workerpool "6.2.1" 1238 | yargs "16.2.0" 1239 | yargs-parser "20.2.4" 1240 | yargs-unparser "2.0.0" 1241 | 1242 | ms@2.0.0: 1243 | version "2.0.0" 1244 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1245 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1246 | 1247 | ms@2.1.2: 1248 | version "2.1.2" 1249 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1250 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1251 | 1252 | ms@2.1.3: 1253 | version "2.1.3" 1254 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1255 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1256 | 1257 | nanoid@3.3.3: 1258 | version "3.3.3" 1259 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 1260 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 1261 | 1262 | negotiator@0.6.3: 1263 | version "0.6.3" 1264 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1265 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1266 | 1267 | neo-async@^2.6.2: 1268 | version "2.6.2" 1269 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1270 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1271 | 1272 | node-releases@^2.0.6: 1273 | version "2.0.8" 1274 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" 1275 | integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== 1276 | 1277 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1278 | version "3.0.0" 1279 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1280 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1281 | 1282 | object-assign@^4: 1283 | version "4.1.1" 1284 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1285 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1286 | 1287 | object-inspect@^1.9.0: 1288 | version "1.12.3" 1289 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 1290 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 1291 | 1292 | on-finished@2.4.1: 1293 | version "2.4.1" 1294 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1295 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1296 | dependencies: 1297 | ee-first "1.1.1" 1298 | 1299 | on-finished@~2.3.0: 1300 | version "2.3.0" 1301 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1302 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== 1303 | dependencies: 1304 | ee-first "1.1.1" 1305 | 1306 | once@^1.3.0: 1307 | version "1.4.0" 1308 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1309 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1310 | dependencies: 1311 | wrappy "1" 1312 | 1313 | p-limit@^2.2.0: 1314 | version "2.3.0" 1315 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1316 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1317 | dependencies: 1318 | p-try "^2.0.0" 1319 | 1320 | p-limit@^3.0.2: 1321 | version "3.1.0" 1322 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1323 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1324 | dependencies: 1325 | yocto-queue "^0.1.0" 1326 | 1327 | p-locate@^4.1.0: 1328 | version "4.1.0" 1329 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1330 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1331 | dependencies: 1332 | p-limit "^2.2.0" 1333 | 1334 | p-locate@^5.0.0: 1335 | version "5.0.0" 1336 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1337 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1338 | dependencies: 1339 | p-limit "^3.0.2" 1340 | 1341 | p-try@^2.0.0: 1342 | version "2.2.0" 1343 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1344 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1345 | 1346 | parseurl@~1.3.3: 1347 | version "1.3.3" 1348 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1349 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1350 | 1351 | path-exists@^4.0.0: 1352 | version "4.0.0" 1353 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1354 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1355 | 1356 | path-is-absolute@^1.0.0: 1357 | version "1.0.1" 1358 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1359 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1360 | 1361 | path-key@^3.1.0: 1362 | version "3.1.1" 1363 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1364 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1365 | 1366 | path-parse@^1.0.7: 1367 | version "1.0.7" 1368 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1369 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1370 | 1371 | picocolors@^1.0.0: 1372 | version "1.0.0" 1373 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1374 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1375 | 1376 | picomatch@^2.0.4, picomatch@^2.2.1: 1377 | version "2.3.1" 1378 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1379 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1380 | 1381 | pkg-dir@^4.2.0: 1382 | version "4.2.0" 1383 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1384 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1385 | dependencies: 1386 | find-up "^4.0.0" 1387 | 1388 | punycode@^2.1.0: 1389 | version "2.3.0" 1390 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 1391 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 1392 | 1393 | qjobs@^1.2.0: 1394 | version "1.2.0" 1395 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" 1396 | integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== 1397 | 1398 | qs@6.11.0: 1399 | version "6.11.0" 1400 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1401 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1402 | dependencies: 1403 | side-channel "^1.0.4" 1404 | 1405 | randombytes@^2.1.0: 1406 | version "2.1.0" 1407 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1408 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1409 | dependencies: 1410 | safe-buffer "^5.1.0" 1411 | 1412 | range-parser@^1.2.1: 1413 | version "1.2.1" 1414 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1415 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1416 | 1417 | raw-body@2.5.1: 1418 | version "2.5.1" 1419 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1420 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1421 | dependencies: 1422 | bytes "3.1.2" 1423 | http-errors "2.0.0" 1424 | iconv-lite "0.4.24" 1425 | unpipe "1.0.0" 1426 | 1427 | readdirp@~3.6.0: 1428 | version "3.6.0" 1429 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1430 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1431 | dependencies: 1432 | picomatch "^2.2.1" 1433 | 1434 | rechoir@^0.7.0: 1435 | version "0.7.1" 1436 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" 1437 | integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== 1438 | dependencies: 1439 | resolve "^1.9.0" 1440 | 1441 | require-directory@^2.1.1: 1442 | version "2.1.1" 1443 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1444 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1445 | 1446 | requires-port@^1.0.0: 1447 | version "1.0.0" 1448 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1449 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 1450 | 1451 | resolve-cwd@^3.0.0: 1452 | version "3.0.0" 1453 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 1454 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 1455 | dependencies: 1456 | resolve-from "^5.0.0" 1457 | 1458 | resolve-from@^5.0.0: 1459 | version "5.0.0" 1460 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 1461 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1462 | 1463 | resolve@^1.9.0: 1464 | version "1.22.1" 1465 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 1466 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1467 | dependencies: 1468 | is-core-module "^2.9.0" 1469 | path-parse "^1.0.7" 1470 | supports-preserve-symlinks-flag "^1.0.0" 1471 | 1472 | rfdc@^1.3.0: 1473 | version "1.3.0" 1474 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 1475 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 1476 | 1477 | rimraf@^3.0.0, rimraf@^3.0.2: 1478 | version "3.0.2" 1479 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1480 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1481 | dependencies: 1482 | glob "^7.1.3" 1483 | 1484 | safe-buffer@^5.1.0: 1485 | version "5.2.1" 1486 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1487 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1488 | 1489 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 1490 | version "2.1.2" 1491 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1492 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1493 | 1494 | schema-utils@^3.1.0, schema-utils@^3.1.1: 1495 | version "3.1.1" 1496 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" 1497 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== 1498 | dependencies: 1499 | "@types/json-schema" "^7.0.8" 1500 | ajv "^6.12.5" 1501 | ajv-keywords "^3.5.2" 1502 | 1503 | serialize-javascript@6.0.0: 1504 | version "6.0.0" 1505 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 1506 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1507 | dependencies: 1508 | randombytes "^2.1.0" 1509 | 1510 | serialize-javascript@^6.0.0: 1511 | version "6.0.1" 1512 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" 1513 | integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== 1514 | dependencies: 1515 | randombytes "^2.1.0" 1516 | 1517 | setprototypeof@1.2.0: 1518 | version "1.2.0" 1519 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1520 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1521 | 1522 | shallow-clone@^3.0.0: 1523 | version "3.0.1" 1524 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" 1525 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== 1526 | dependencies: 1527 | kind-of "^6.0.2" 1528 | 1529 | shebang-command@^2.0.0: 1530 | version "2.0.0" 1531 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1532 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1533 | dependencies: 1534 | shebang-regex "^3.0.0" 1535 | 1536 | shebang-regex@^3.0.0: 1537 | version "3.0.0" 1538 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1539 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1540 | 1541 | side-channel@^1.0.4: 1542 | version "1.0.4" 1543 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1544 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1545 | dependencies: 1546 | call-bind "^1.0.0" 1547 | get-intrinsic "^1.0.2" 1548 | object-inspect "^1.9.0" 1549 | 1550 | socket.io-adapter@~2.4.0: 1551 | version "2.4.0" 1552 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" 1553 | integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== 1554 | 1555 | socket.io-parser@~4.2.1: 1556 | version "4.2.2" 1557 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.2.tgz#1dd384019e25b7a3d374877f492ab34f2ad0d206" 1558 | integrity sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw== 1559 | dependencies: 1560 | "@socket.io/component-emitter" "~3.1.0" 1561 | debug "~4.3.1" 1562 | 1563 | socket.io@^4.4.1: 1564 | version "4.5.4" 1565 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.4.tgz#a4513f06e87451c17013b8d13fdfaf8da5a86a90" 1566 | integrity sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ== 1567 | dependencies: 1568 | accepts "~1.3.4" 1569 | base64id "~2.0.0" 1570 | debug "~4.3.2" 1571 | engine.io "~6.2.1" 1572 | socket.io-adapter "~2.4.0" 1573 | socket.io-parser "~4.2.1" 1574 | 1575 | source-map-js@^1.0.2: 1576 | version "1.0.2" 1577 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1578 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1579 | 1580 | source-map-loader@4.0.0: 1581 | version "4.0.0" 1582 | resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.0.tgz#bdc6b118bc6c87ee4d8d851f2d4efcc5abdb2ef5" 1583 | integrity sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw== 1584 | dependencies: 1585 | abab "^2.0.6" 1586 | iconv-lite "^0.6.3" 1587 | source-map-js "^1.0.2" 1588 | 1589 | source-map-support@0.5.21, source-map-support@~0.5.20: 1590 | version "0.5.21" 1591 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 1592 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1593 | dependencies: 1594 | buffer-from "^1.0.0" 1595 | source-map "^0.6.0" 1596 | 1597 | source-map@^0.6.0, source-map@^0.6.1: 1598 | version "0.6.1" 1599 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1600 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1601 | 1602 | statuses@2.0.1: 1603 | version "2.0.1" 1604 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1605 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1606 | 1607 | statuses@~1.5.0: 1608 | version "1.5.0" 1609 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1610 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== 1611 | 1612 | streamroller@^3.1.3: 1613 | version "3.1.4" 1614 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.4.tgz#844a18e795d39c1089a8216e66a1cf1151271df0" 1615 | integrity sha512-Ha1Ccw2/N5C/IF8Do6zgNe8F3jQo8MPBnMBGvX0QjNv/I97BcNRzK6/mzOpZHHK7DjMLTI3c7Xw7Y1KvdChkvw== 1616 | dependencies: 1617 | date-format "^4.0.14" 1618 | debug "^4.3.4" 1619 | fs-extra "^8.1.0" 1620 | 1621 | string-width@^4.1.0, string-width@^4.2.0: 1622 | version "4.2.3" 1623 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1624 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1625 | dependencies: 1626 | emoji-regex "^8.0.0" 1627 | is-fullwidth-code-point "^3.0.0" 1628 | strip-ansi "^6.0.1" 1629 | 1630 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1631 | version "6.0.1" 1632 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1633 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1634 | dependencies: 1635 | ansi-regex "^5.0.1" 1636 | 1637 | strip-json-comments@3.1.1: 1638 | version "3.1.1" 1639 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1640 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1641 | 1642 | supports-color@8.1.1, supports-color@^8.0.0: 1643 | version "8.1.1" 1644 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1645 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1646 | dependencies: 1647 | has-flag "^4.0.0" 1648 | 1649 | supports-color@^7.1.0: 1650 | version "7.2.0" 1651 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1652 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1653 | dependencies: 1654 | has-flag "^4.0.0" 1655 | 1656 | supports-preserve-symlinks-flag@^1.0.0: 1657 | version "1.0.0" 1658 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1659 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1660 | 1661 | tapable@^2.1.1, tapable@^2.2.0: 1662 | version "2.2.1" 1663 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" 1664 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 1665 | 1666 | terser-webpack-plugin@^5.1.3: 1667 | version "5.3.6" 1668 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" 1669 | integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== 1670 | dependencies: 1671 | "@jridgewell/trace-mapping" "^0.3.14" 1672 | jest-worker "^27.4.5" 1673 | schema-utils "^3.1.1" 1674 | serialize-javascript "^6.0.0" 1675 | terser "^5.14.1" 1676 | 1677 | terser@^5.14.1: 1678 | version "5.16.1" 1679 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" 1680 | integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== 1681 | dependencies: 1682 | "@jridgewell/source-map" "^0.3.2" 1683 | acorn "^8.5.0" 1684 | commander "^2.20.0" 1685 | source-map-support "~0.5.20" 1686 | 1687 | tmp@^0.2.1: 1688 | version "0.2.1" 1689 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1690 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1691 | dependencies: 1692 | rimraf "^3.0.0" 1693 | 1694 | to-regex-range@^5.0.1: 1695 | version "5.0.1" 1696 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1697 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1698 | dependencies: 1699 | is-number "^7.0.0" 1700 | 1701 | toidentifier@1.0.1: 1702 | version "1.0.1" 1703 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1704 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1705 | 1706 | type-is@~1.6.18: 1707 | version "1.6.18" 1708 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1709 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1710 | dependencies: 1711 | media-typer "0.3.0" 1712 | mime-types "~2.1.24" 1713 | 1714 | ua-parser-js@^0.7.30: 1715 | version "0.7.33" 1716 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" 1717 | integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== 1718 | 1719 | universalify@^0.1.0: 1720 | version "0.1.2" 1721 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1722 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1723 | 1724 | unpipe@1.0.0, unpipe@~1.0.0: 1725 | version "1.0.0" 1726 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1727 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1728 | 1729 | update-browserslist-db@^1.0.9: 1730 | version "1.0.10" 1731 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" 1732 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== 1733 | dependencies: 1734 | escalade "^3.1.1" 1735 | picocolors "^1.0.0" 1736 | 1737 | uri-js@^4.2.2: 1738 | version "4.4.1" 1739 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1740 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1741 | dependencies: 1742 | punycode "^2.1.0" 1743 | 1744 | utils-merge@1.0.1: 1745 | version "1.0.1" 1746 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1747 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1748 | 1749 | vary@^1: 1750 | version "1.1.2" 1751 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1752 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1753 | 1754 | void-elements@^2.0.0: 1755 | version "2.0.1" 1756 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 1757 | integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== 1758 | 1759 | watchpack@^2.4.0: 1760 | version "2.4.0" 1761 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" 1762 | integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== 1763 | dependencies: 1764 | glob-to-regexp "^0.4.1" 1765 | graceful-fs "^4.1.2" 1766 | 1767 | webpack-cli@4.10.0: 1768 | version "4.10.0" 1769 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" 1770 | integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== 1771 | dependencies: 1772 | "@discoveryjs/json-ext" "^0.5.0" 1773 | "@webpack-cli/configtest" "^1.2.0" 1774 | "@webpack-cli/info" "^1.5.0" 1775 | "@webpack-cli/serve" "^1.7.0" 1776 | colorette "^2.0.14" 1777 | commander "^7.0.0" 1778 | cross-spawn "^7.0.3" 1779 | fastest-levenshtein "^1.0.12" 1780 | import-local "^3.0.2" 1781 | interpret "^2.2.0" 1782 | rechoir "^0.7.0" 1783 | webpack-merge "^5.7.3" 1784 | 1785 | webpack-merge@^4.1.5: 1786 | version "4.2.2" 1787 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" 1788 | integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== 1789 | dependencies: 1790 | lodash "^4.17.15" 1791 | 1792 | webpack-merge@^5.7.3: 1793 | version "5.8.0" 1794 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" 1795 | integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== 1796 | dependencies: 1797 | clone-deep "^4.0.1" 1798 | wildcard "^2.0.0" 1799 | 1800 | webpack-sources@^3.2.3: 1801 | version "3.2.3" 1802 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 1803 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 1804 | 1805 | webpack@5.74.0: 1806 | version "5.74.0" 1807 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" 1808 | integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== 1809 | dependencies: 1810 | "@types/eslint-scope" "^3.7.3" 1811 | "@types/estree" "^0.0.51" 1812 | "@webassemblyjs/ast" "1.11.1" 1813 | "@webassemblyjs/wasm-edit" "1.11.1" 1814 | "@webassemblyjs/wasm-parser" "1.11.1" 1815 | acorn "^8.7.1" 1816 | acorn-import-assertions "^1.7.6" 1817 | browserslist "^4.14.5" 1818 | chrome-trace-event "^1.0.2" 1819 | enhanced-resolve "^5.10.0" 1820 | es-module-lexer "^0.9.0" 1821 | eslint-scope "5.1.1" 1822 | events "^3.2.0" 1823 | glob-to-regexp "^0.4.1" 1824 | graceful-fs "^4.2.9" 1825 | json-parse-even-better-errors "^2.3.1" 1826 | loader-runner "^4.2.0" 1827 | mime-types "^2.1.27" 1828 | neo-async "^2.6.2" 1829 | schema-utils "^3.1.0" 1830 | tapable "^2.1.1" 1831 | terser-webpack-plugin "^5.1.3" 1832 | watchpack "^2.4.0" 1833 | webpack-sources "^3.2.3" 1834 | 1835 | which@^1.2.1: 1836 | version "1.3.1" 1837 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1838 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1839 | dependencies: 1840 | isexe "^2.0.0" 1841 | 1842 | which@^2.0.1: 1843 | version "2.0.2" 1844 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1845 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1846 | dependencies: 1847 | isexe "^2.0.0" 1848 | 1849 | wildcard@^2.0.0: 1850 | version "2.0.0" 1851 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" 1852 | integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== 1853 | 1854 | workerpool@6.2.1: 1855 | version "6.2.1" 1856 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 1857 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 1858 | 1859 | wrap-ansi@^7.0.0: 1860 | version "7.0.0" 1861 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1862 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1863 | dependencies: 1864 | ansi-styles "^4.0.0" 1865 | string-width "^4.1.0" 1866 | strip-ansi "^6.0.0" 1867 | 1868 | wrappy@1: 1869 | version "1.0.2" 1870 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1871 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1872 | 1873 | ws@~8.2.3: 1874 | version "8.2.3" 1875 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" 1876 | integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== 1877 | 1878 | y18n@^5.0.5: 1879 | version "5.0.8" 1880 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1881 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1882 | 1883 | yargs-parser@20.2.4: 1884 | version "20.2.4" 1885 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1886 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1887 | 1888 | yargs-parser@^20.2.2: 1889 | version "20.2.9" 1890 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1891 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1892 | 1893 | yargs-unparser@2.0.0: 1894 | version "2.0.0" 1895 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1896 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1897 | dependencies: 1898 | camelcase "^6.0.0" 1899 | decamelize "^4.0.0" 1900 | flat "^5.0.2" 1901 | is-plain-obj "^2.1.0" 1902 | 1903 | yargs@16.2.0, yargs@^16.1.1: 1904 | version "16.2.0" 1905 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1906 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1907 | dependencies: 1908 | cliui "^7.0.2" 1909 | escalade "^3.1.1" 1910 | get-caller-file "^2.0.5" 1911 | require-directory "^2.1.1" 1912 | string-width "^4.2.0" 1913 | y18n "^5.0.5" 1914 | yargs-parser "^20.2.2" 1915 | 1916 | yocto-queue@^0.1.0: 1917 | version "0.1.0" 1918 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1919 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1920 | -------------------------------------------------------------------------------- /redux-kotlin-thunk/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import util.jvmCommonTest 2 | 3 | plugins { 4 | id("convention.library-mpp-all") 5 | id("convention.publishing-mpp") 6 | } 7 | 8 | android { 9 | namespace = "org.reduxkotlin.thunk" 10 | } 11 | 12 | kotlin { 13 | sourceSets { 14 | jvmCommonTest { 15 | dependencies { 16 | implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:_") 17 | } 18 | } 19 | } 20 | } 21 | 22 | kotlin { 23 | sourceSets { 24 | commonMain { 25 | dependencies { 26 | api("org.reduxkotlin:redux-kotlin:_") 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /redux-kotlin-thunk/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle.kts. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /redux-kotlin-thunk/src/commonMain/kotlin/org/reduxkotlin/thunk/Thunk.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.thunk 2 | 3 | import org.reduxkotlin.Dispatcher 4 | import org.reduxkotlin.GetState 5 | import org.reduxkotlin.Middleware 6 | 7 | /** 8 | * Specialised async action type that can be dispatched to a store with registered [ThunkMiddleware] 9 | */ 10 | public typealias Thunk = (dispatch: Dispatcher, getState: GetState, extraArg: Any?) -> Any 11 | 12 | /** 13 | * @see [createThunkMiddleware] 14 | */ 15 | public typealias ThunkMiddleware = Middleware 16 | 17 | /** 18 | * Creates a thunk middleware for async action dispatches. 19 | * Usage: 20 | * val thunk = createThunkMiddleware() 21 | * val store = createStore(myReducer, initialState, applyMiddleware(thunk, myMiddleware)) 22 | * 23 | * fun myNetworkThunk(query: String): Thunk = { dispatch, getState, extraArgument -> 24 | * launch { 25 | * dispatch(LoadingAction()) 26 | * //do async stuff 27 | * val result = api.fetch(query) 28 | * dispatch(CompleteAction(result)) 29 | * } 30 | * } 31 | * 32 | * store.dispatch(myNetworkThunk("query")) 33 | */ 34 | public fun createThunkMiddleware(extraArgument: Any? = null): ThunkMiddleware = 35 | { store -> 36 | { next: Dispatcher -> 37 | { action: Any -> 38 | if (action is Function<*>) { 39 | @Suppress("UNCHECKED_CAST") 40 | val thunk = try { 41 | (action as Thunk<*>) 42 | } catch (e: ClassCastException) { 43 | throw IllegalArgumentException( 44 | "Dispatching functions must use type Thunk", 45 | e 46 | ) 47 | } 48 | thunk(store.dispatch, store.getState, extraArgument) 49 | } else { 50 | next(action) 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /redux-kotlin-thunk/src/jvmCommonTest/kotlin/org/reduxkotlin/thunk/ThunkTest.kt: -------------------------------------------------------------------------------- 1 | package org.reduxkotlin.thunk 2 | 3 | import kotlinx.coroutines.runBlocking 4 | import org.reduxkotlin.applyMiddleware 5 | import org.reduxkotlin.compose 6 | import org.reduxkotlin.createStore 7 | import test.TestApp 8 | import java.util.Timer 9 | import kotlin.concurrent.timerTask 10 | import kotlin.test.Test 11 | import kotlin.test.assertEquals 12 | 13 | class ThunkTest { 14 | 15 | @Test 16 | fun asyncIncrement() { 17 | val store = createStore( 18 | TestApp.counterReducer, 19 | TestApp.TestState(), 20 | compose( 21 | applyMiddleware(createThunkMiddleware()), 22 | ) 23 | ) 24 | runBlocking { 25 | store.dispatch(TestApp.incrementThunk()) 26 | // wait to assert to account for the last of thunk delays 27 | Timer().schedule( 28 | timerTask { 29 | assertEquals(10000, store.state.counter) 30 | }, 31 | 50 32 | ) 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /redux-kotlin-thunk/src/jvmCommonTest/kotlin/test/TestApp.kt: -------------------------------------------------------------------------------- 1 | package test 2 | 3 | import org.reduxkotlin.* 4 | import org.reduxkotlin.thunk.Thunk 5 | import java.util.* 6 | import kotlin.concurrent.timerTask 7 | 8 | object TestApp { 9 | sealed interface TestAction 10 | object Increment : TestAction 11 | 12 | data class TestState(val counter: Int = 0) 13 | 14 | val counterReducer = { state: TestState, action: Any -> 15 | when (action) { 16 | is Increment -> state.copy(counter = state.counter + 1) 17 | else -> state 18 | } 19 | } 20 | 21 | fun incrementThunk(): Thunk = { dispatch, getState, _ -> 22 | Timer().schedule( 23 | timerTask { 24 | dispatch(Increment) 25 | }, 26 | 50 27 | ) 28 | getState() 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | google() 6 | } 7 | } 8 | 9 | plugins { 10 | id("de.fayard.refreshVersions") version "0.51.0" 11 | id("com.gradle.enterprise") version "3.12.2" 12 | } 13 | 14 | refreshVersions { 15 | versionsPropertiesFile = rootDir.resolve("gradle/versions.properties") 16 | extraArtifactVersionKeyRules(rootDir.resolve("gradle/versions.rules")) 17 | } 18 | 19 | includeBuild("build-conventions/") 20 | 21 | include( 22 | ":redux-kotlin-thunk" 23 | ) 24 | 25 | rootProject.name = "Redux-Kotlin-Thunk" 26 | --------------------------------------------------------------------------------